@esri/arcgis-rest-places 1.1.0 → 1.2.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +3 -2
  2. package/dist/bundled/places.esm.js +33 -9
  3. package/dist/bundled/places.esm.js.map +1 -1
  4. package/dist/bundled/places.esm.min.js +4 -4
  5. package/dist/bundled/places.esm.min.js.map +1 -1
  6. package/dist/bundled/places.umd.js +32 -8
  7. package/dist/bundled/places.umd.js.map +1 -1
  8. package/dist/bundled/places.umd.min.js +4 -4
  9. package/dist/bundled/places.umd.min.js.map +1 -1
  10. package/dist/cjs/findPlacesNearPoint.js +10 -1
  11. package/dist/cjs/findPlacesNearPoint.js.map +1 -1
  12. package/dist/cjs/findPlacesWithinExtent.js +2 -1
  13. package/dist/cjs/findPlacesWithinExtent.js.map +1 -1
  14. package/dist/cjs/getCategories.js +1 -1
  15. package/dist/cjs/getCategories.js.map +1 -1
  16. package/dist/cjs/getCategory.js +1 -1
  17. package/dist/cjs/getCategory.js.map +1 -1
  18. package/dist/cjs/getPlaceDetails.js +1 -1
  19. package/dist/cjs/getPlaceDetails.js.map +1 -1
  20. package/dist/cjs/iconOptions.js +17 -0
  21. package/dist/cjs/iconOptions.js.map +1 -0
  22. package/dist/cjs/index.js +1 -0
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/cjs/openapi-types.js.map +1 -1
  25. package/dist/esm/findPlacesNearPoint.d.ts +2 -0
  26. package/dist/esm/findPlacesNearPoint.js +10 -1
  27. package/dist/esm/findPlacesNearPoint.js.map +1 -1
  28. package/dist/esm/findPlacesWithinExtent.d.ts +2 -0
  29. package/dist/esm/findPlacesWithinExtent.js +2 -1
  30. package/dist/esm/findPlacesWithinExtent.js.map +1 -1
  31. package/dist/esm/getCategories.d.ts +2 -0
  32. package/dist/esm/getCategories.js +1 -1
  33. package/dist/esm/getCategories.js.map +1 -1
  34. package/dist/esm/getCategory.d.ts +2 -0
  35. package/dist/esm/getCategory.js +1 -1
  36. package/dist/esm/getCategory.js.map +1 -1
  37. package/dist/esm/getPlaceDetails.d.ts +2 -0
  38. package/dist/esm/getPlaceDetails.js +1 -1
  39. package/dist/esm/getPlaceDetails.js.map +1 -1
  40. package/dist/esm/iconOptions.d.ts +5 -0
  41. package/dist/esm/iconOptions.js +14 -0
  42. package/dist/esm/iconOptions.js.map +1 -0
  43. package/dist/esm/index.d.ts +1 -0
  44. package/dist/esm/index.js +1 -0
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/openapi-types.d.ts +311 -49
  47. package/dist/esm/openapi-types.js.map +1 -1
  48. package/package.json +3 -3
package/README.md CHANGED
@@ -56,13 +56,14 @@ Esri welcomes contributions from anyone and everyone. Please see our [guidelines
56
56
 
57
57
  ### Generating Types from Open API
58
58
 
59
- The places service publishes an Open API definition. Eventually this will live at a public URL on the service itself. However for now it lives inside the Esri internal GitHub Enterprise installation. To generate the types view the raw file on GitHub Enterprise and replace the URL below.
59
+ The places service publishes an Open API definition you can generate the types from the OpenAPI definition below:
60
60
 
61
61
  ```
62
- npx openapi-typescript@5 URL_TO_RAW_SPEC_FILE --output packages/arcgis-rest-places/src/openapi-types.ts
62
+ npx openapi-typescript@5 https://places-api.arcgis.com/arcgis/rest/services/places-service/v1/specification/open-api-v3-0/ --output packages/arcgis-rest-places/src/openapi-types.ts
63
63
  ```
64
64
 
65
65
  The generated types are used in the interfaces for ArcGIS REST JS.
66
+ The most recent version if the Open API spec is linked to from the places documentation https://developers.arcgis.com/rest/places/
66
67
 
67
68
  ### [Changelog](https://github.com/Esri/arcgis-rest-js/blob/master/CHANGELOG.md)
68
69
 
@@ -1,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-places - v1.0.2 - Apache-2.0
3
- * Copyright (c) 2017-2024 Esri, Inc.
4
- * Tue Jun 18 2024 23:49:53 GMT+0000 (Coordinated Universal Time)
2
+ * @esri/arcgis-rest-places - v1.2.0 - Apache-2.0
3
+ * Copyright (c) 2017-2025 Esri, Inc.
4
+ * Mon May 12 2025 21:29:23 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
6
  import { appendCustomParams, request } from '@esri/arcgis-rest-request';
7
7
 
@@ -54,7 +54,16 @@ function getNextPageParams(currentOffset = 0, currentPageSize = 10) {
54
54
  * ```
55
55
  */
56
56
  function findPlacesNearPoint(requestOptions) {
57
- const options = appendCustomParams(requestOptions, ["x", "y", "radius", "categoryIds", "pageSize", "offset", "searchText"], Object.assign({}, requestOptions));
57
+ const options = appendCustomParams(requestOptions, [
58
+ "x",
59
+ "y",
60
+ "radius",
61
+ "categoryIds",
62
+ "pageSize",
63
+ "offset",
64
+ "searchText",
65
+ "icon"
66
+ ], Object.assign({}, requestOptions));
58
67
  return request(requestOptions.endpoint || `${baseUrl}/places/near-point`, Object.assign(Object.assign({}, options), { httpMethod: "GET" })).then((response) => {
59
68
  const r = Object.assign({}, response);
60
69
  if (hasNextPage(response)) {
@@ -113,7 +122,8 @@ function findPlacesWithinExtent(requestOptions) {
113
122
  "categoryIds",
114
123
  "pageSize",
115
124
  "offset",
116
- "searchText"
125
+ "searchText",
126
+ "icon"
117
127
  ], Object.assign({}, requestOptions));
118
128
  return request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, Object.assign(Object.assign({}, options), { httpMethod: "GET" })).then((response) => {
119
129
  const r = Object.assign({}, response);
@@ -157,7 +167,7 @@ function findPlacesWithinExtent(requestOptions) {
157
167
  */
158
168
  function getPlaceDetails(requestOptions) {
159
169
  const { placeId } = requestOptions;
160
- const options = appendCustomParams(requestOptions, ["requestedFields"], Object.assign({}, requestOptions));
170
+ const options = appendCustomParams(requestOptions, ["requestedFields", "icon"], Object.assign({}, requestOptions));
161
171
  return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, Object.assign(Object.assign({}, options), { httpMethod: "GET" }));
162
172
  }
163
173
 
@@ -184,7 +194,7 @@ function getPlaceDetails(requestOptions) {
184
194
  * ```
185
195
  */
186
196
  function getCategories(requestOptions) {
187
- const options = appendCustomParams(requestOptions, ["filter"], Object.assign({}, requestOptions));
197
+ const options = appendCustomParams(requestOptions, ["filter", "icon"], Object.assign({}, requestOptions));
188
198
  return request(requestOptions.endpoint || `${baseUrl}/categories`, Object.assign(Object.assign({}, options), { httpMethod: "GET" }));
189
199
  }
190
200
 
@@ -205,9 +215,23 @@ function getCategories(requestOptions) {
205
215
  **/
206
216
  function getCategory(requestOptions) {
207
217
  const { categoryId } = requestOptions;
208
- const options = appendCustomParams(requestOptions, [], Object.assign({}, requestOptions));
218
+ const options = appendCustomParams(requestOptions, ["icon"], Object.assign({}, requestOptions));
209
219
  return request(requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`, Object.assign(Object.assign({}, options), { httpMethod: "GET" }));
210
220
  }
211
221
 
212
- export { findPlacesNearPoint, findPlacesWithinExtent, getCategories, getCategory, getPlaceDetails };
222
+ /*
223
+ Use this parameter to define the type of icon URL for a given place or category. Place icons are available in the following formats:
224
+
225
+ svg
226
+ cim (Cartographic Information Model)
227
+ png 48 x 48 pixels
228
+ */
229
+ var IconOptions;
230
+ (function (IconOptions) {
231
+ IconOptions["PNG"] = "png";
232
+ IconOptions["SVG"] = "svg";
233
+ IconOptions["CIM"] = "cim";
234
+ })(IconOptions || (IconOptions = {}));
235
+
236
+ export { IconOptions, findPlacesNearPoint, findPlacesWithinExtent, getCategories, getCategory, getPlaceDetails };
213
237
  //# sourceMappingURL=places.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"places.esm.js","sources":["../../src/utils.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getPlaceDetails.ts","../../src/getCategories.ts","../../src/getCategory.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\"x\", \"y\", \"radius\", \"categoryIds\", \"pageSize\", \"offset\", \"searchText\"],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(requestOptions, [], {\n ...requestOptions\n });\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"places.esm.js","sources":["../../src/utils.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getPlaceDetails.ts","../../src/getCategories.ts","../../src/getCategory.ts","../../src/iconOptions.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\n \"x\",\n \"y\",\n \"radius\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n icon?: IconOptions;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(\n requestOptions,\n [\"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n","/*\nUse this parameter to define the type of icon URL for a given place or category. Place icons are available in the following formats:\n\n svg\n cim (Cartographic Information Model)\n png 48 x 48 pixels\n*/\n\nexport enum IconOptions {\n PNG = \"png\",\n SVG = \"svg\",\n CIM = \"cim\"\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-places - v1.0.2 - Apache-2.0
3
- * Copyright (c) 2017-2024 Esri, Inc.
4
- * Tue Jun 18 2024 23:49:53 GMT+0000 (Coordinated Universal Time)
2
+ * @esri/arcgis-rest-places - v1.2.0 - Apache-2.0
3
+ * Copyright (c) 2017-2025 Esri, Inc.
4
+ * Mon May 12 2025 21:29:23 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
- import{appendCustomParams as e,request as t}from"@esri/arcgis-rest-request";const n="https://places-api.arcgis.com/arcgis/rest/services/places-service/v1";function s(e){var t,n;return!!(null===(t=null==e?void 0:e.links)||void 0===t?void 0:t.next)||!!(null===(n=null==e?void 0:e.pagination)||void 0===n?void 0:n.nextUrl)}function i(e=0,t=10){return{offset:e+t,pageSize:t}}function c(a){const o=e(a,["x","y","radius","categoryIds","pageSize","offset","searchText"],Object.assign({},a));return t(a.endpoint||`${n}/places/near-point`,Object.assign(Object.assign({},o),{httpMethod:"GET"})).then((e=>{const t=Object.assign({},e);return s(e)&&(t.nextPage=()=>c(Object.assign(Object.assign({},a),i(a.offset,a.pageSize)))),t}))}function a(c){const o=e(c,["xmin","ymin","xmax","ymax","categoryIds","pageSize","offset","searchText"],Object.assign({},c));return t(c.endpoint||`${n}/places/within-extent`,Object.assign(Object.assign({},o),{httpMethod:"GET"})).then((e=>{const t=Object.assign({},e);return s(e)&&(t.nextPage=()=>a(Object.assign(Object.assign({},c),i(c.offset,c.pageSize)))),t}))}function o(s){const{placeId:i}=s,c=e(s,["requestedFields"],Object.assign({},s));return t(s.endpoint||`${n}/places/${i}`,Object.assign(Object.assign({},c),{httpMethod:"GET"}))}function r(s){const i=e(s,["filter"],Object.assign({},s));return t(s.endpoint||`${n}/categories`,Object.assign(Object.assign({},i),{httpMethod:"GET"}))}function g(s){const{categoryId:i}=s,c=e(s,[],Object.assign({},s));return t(s.endpoint||`${n}/categories/${i}`,Object.assign(Object.assign({},c),{httpMethod:"GET"}))}export{c as findPlacesNearPoint,a as findPlacesWithinExtent,r as getCategories,g as getCategory,o as getPlaceDetails};
6
+ import{appendCustomParams as e,request as t}from"@esri/arcgis-rest-request";const n="https://places-api.arcgis.com/arcgis/rest/services/places-service/v1";function s(e){var t,n;return!!(null===(t=null==e?void 0:e.links)||void 0===t?void 0:t.next)||!!(null===(n=null==e?void 0:e.pagination)||void 0===n?void 0:n.nextUrl)}function i(e=0,t=10){return{offset:e+t,pageSize:t}}function c(a){const o=e(a,["x","y","radius","categoryIds","pageSize","offset","searchText","icon"],Object.assign({},a));return t(a.endpoint||`${n}/places/near-point`,Object.assign(Object.assign({},o),{httpMethod:"GET"})).then((e=>{const t=Object.assign({},e);return s(e)&&(t.nextPage=()=>c(Object.assign(Object.assign({},a),i(a.offset,a.pageSize)))),t}))}function a(c){const o=e(c,["xmin","ymin","xmax","ymax","categoryIds","pageSize","offset","searchText","icon"],Object.assign({},c));return t(c.endpoint||`${n}/places/within-extent`,Object.assign(Object.assign({},o),{httpMethod:"GET"})).then((e=>{const t=Object.assign({},e);return s(e)&&(t.nextPage=()=>a(Object.assign(Object.assign({},c),i(c.offset,c.pageSize)))),t}))}function o(s){const{placeId:i}=s,c=e(s,["requestedFields","icon"],Object.assign({},s));return t(s.endpoint||`${n}/places/${i}`,Object.assign(Object.assign({},c),{httpMethod:"GET"}))}function r(s){const i=e(s,["filter","icon"],Object.assign({},s));return t(s.endpoint||`${n}/categories`,Object.assign(Object.assign({},i),{httpMethod:"GET"}))}function g(s){const{categoryId:i}=s,c=e(s,["icon"],Object.assign({},s));return t(s.endpoint||`${n}/categories/${i}`,Object.assign(Object.assign({},c),{httpMethod:"GET"}))}var p;!function(e){e.PNG="png",e.SVG="svg",e.CIM="cim"}(p||(p={}));export{p as IconOptions,c as findPlacesNearPoint,a as findPlacesWithinExtent,r as getCategories,g as getCategory,o as getPlaceDetails};
7
7
  //# sourceMappingURL=places.esm.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"places.esm.min.js","sources":["../../src/utils.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getPlaceDetails.ts","../../src/getCategories.ts","../../src/getCategory.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\"x\", \"y\", \"radius\", \"categoryIds\", \"pageSize\", \"offset\", \"searchText\"],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(requestOptions, [], {\n ...requestOptions\n });\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n"],"names":["baseUrl","hasNextPage","response","links","next","pagination","nextUrl","getNextPageParams","currentOffset","currentPageSize","offset","pageSize","findPlacesNearPoint","requestOptions","options","appendCustomParams","request","endpoint","httpMethod","then","r","nextPage","findPlacesWithinExtent","getPlaceDetails","placeId","getCategories","getCategory","categoryId"],"mappings":";;;;;4EAAO,MAAMA,EACX,gFAEcC,EAAYC,WAC1B,mBAASA,eAAAA,EAAUC,4BAAOC,oBAAUF,eAAAA,EAAUG,iCAAYC,QAC5D,UAEgBC,EAAkBC,EAAgB,EAAGC,EAAkB,IACrE,MAAO,CACLC,OAAQF,EAAgBC,EACxBE,SAAUF,EAEd,UCgEgBG,EACdC,GAEA,MAAMC,EAAUC,EACdF,EACA,CAAC,IAAK,IAAK,SAAU,cAAe,WAAY,SAAU,+BAErDA,IAIP,OACEG,EAAQH,EAAeI,UAAY,GAAGjB,qDACjCc,IACHI,WAAY,SAEdC,MAAMjB,IACN,MAAMkB,mBACDlB,GAaL,OAVID,EAAYC,KACdkB,EAAEC,SAAW,IAKJT,iCAHFC,GACAN,EAAkBM,EAAeH,OAAQG,EAAeF,aAM1DS,CAAC,GAEZ,UCzBgBE,EACdT,GAEA,MAAMC,EAAUC,EACdF,EACA,CACE,OACA,OACA,OACA,OACA,cACA,WACA,SACA,+BAGGA,IAIP,OACEG,EAAQH,EAAeI,UAAY,GAAGjB,wDACjCc,IACHI,WAAY,SAEdC,MAAMjB,IACN,MAAMkB,mBACDlB,GAYL,OATID,EAAYC,KACdkB,EAAEC,SAAW,IAKJC,iCAHFT,GACAN,EAAkBM,EAAeH,OAAQG,EAAeF,aAK1DS,CAAC,GAEZ,UC1DgBG,EACdV,GAEA,MAAMW,QAAEA,GAAYX,EAEdC,EAAUC,EACdF,EACA,CAAC,oCAEIA,IAIP,OAAOG,EAAQH,EAAeI,UAAY,GAAGjB,YAAkBwB,mCAC1DV,IACHI,WAAY,QAEhB,UCxBgBO,EACdZ,GAEA,MAAMC,EAAUC,EACdF,EACA,CAAC,2BAEIA,IAIP,OAAOG,EAAQH,EAAeI,UAAY,GAAGjB,8CACxCc,IACHI,WAAY,QAEhB,UCxBgBQ,EACdb,GAEA,MAAMc,WAAEA,GAAed,EAEjBC,EAAUC,EAAwCF,EAAgB,oBACnEA,IAGL,OAAOG,EACLH,EAAeI,UAAY,GAAGjB,gBAAsB2B,mCAE/Cb,IACHI,WAAY,QAGlB"}
1
+ {"version":3,"file":"places.esm.min.js","sources":["../../src/utils.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getPlaceDetails.ts","../../src/getCategories.ts","../../src/getCategory.ts","../../src/iconOptions.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\n \"x\",\n \"y\",\n \"radius\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n icon?: IconOptions;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(\n requestOptions,\n [\"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n","/*\nUse this parameter to define the type of icon URL for a given place or category. Place icons are available in the following formats:\n\n svg\n cim (Cartographic Information Model)\n png 48 x 48 pixels\n*/\n\nexport enum IconOptions {\n PNG = \"png\",\n SVG = \"svg\",\n CIM = \"cim\"\n}\n"],"names":["baseUrl","hasNextPage","response","links","next","pagination","nextUrl","getNextPageParams","currentOffset","currentPageSize","offset","pageSize","findPlacesNearPoint","requestOptions","options","appendCustomParams","request","endpoint","httpMethod","then","r","nextPage","findPlacesWithinExtent","getPlaceDetails","placeId","getCategories","getCategory","categoryId","IconOptions"],"mappings":";;;;;4EAAO,MAAMA,EACX,gFAEcC,EAAYC,WAC1B,mBAASA,eAAAA,EAAUC,4BAAOC,oBAAUF,eAAAA,EAAUG,iCAAYC,QAC5D,UAEgBC,EAAkBC,EAAgB,EAAGC,EAAkB,IACrE,MAAO,CACLC,OAAQF,EAAgBC,EACxBE,SAAUF,EAEd,UCkEgBG,EACdC,GAEA,MAAMC,EAAUC,EACdF,EACA,CACE,IACA,IACA,SACA,cACA,WACA,SACA,aACA,yBAGGA,IAIP,OACEG,EAAQH,EAAeI,UAAY,GAAGjB,qDACjCc,IACHI,WAAY,SAEdC,MAAMjB,IACN,MAAMkB,mBACDlB,GAaL,OAVID,EAAYC,KACdkB,EAAEC,SAAW,IAKJT,iCAHFC,GACAN,EAAkBM,EAAeH,OAAQG,EAAeF,aAM1DS,CAAC,GAEZ,UClCgBE,EACdT,GAEA,MAAMC,EAAUC,EACdF,EACA,CACE,OACA,OACA,OACA,OACA,cACA,WACA,SACA,aACA,yBAGGA,IAIP,OACEG,EAAQH,EAAeI,UAAY,GAAGjB,wDACjCc,IACHI,WAAY,SAEdC,MAAMjB,IACN,MAAMkB,mBACDlB,GAYL,OATID,EAAYC,KACdkB,EAAEC,SAAW,IAKJC,iCAHFT,GACAN,EAAkBM,EAAeH,OAAQG,EAAeF,aAK1DS,CAAC,GAEZ,UC3DgBG,EACdV,GAEA,MAAMW,QAAEA,GAAYX,EAEdC,EAAUC,EACdF,EACA,CAAC,kBAAmB,yBAEfA,IAIP,OAAOG,EAAQH,EAAeI,UAAY,GAAGjB,YAAkBwB,mCAC1DV,IACHI,WAAY,QAEhB,UCxBgBO,EACdZ,GAEA,MAAMC,EAAUC,EACdF,EACA,CAAC,SAAU,yBAENA,IAIP,OAAOG,EAAQH,EAAeI,UAAY,GAAGjB,8CACxCc,IACHI,WAAY,QAEhB,UCxBgBQ,EACdb,GAEA,MAAMc,WAAEA,GAAed,EAEjBC,EAAUC,EACdF,EACA,CAAC,yBAEIA,IAIP,OAAOG,EACLH,EAAeI,UAAY,GAAGjB,gBAAsB2B,mCAE/Cb,IACHI,WAAY,QAGlB,KCjEYU,GAAZ,SAAYA,GACVA,YACAA,YACAA,WACD,CAJD,CAAYA,IAAAA"}
@@ -1,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-places - v1.0.2 - Apache-2.0
3
- * Copyright (c) 2017-2024 Esri, Inc.
4
- * Tue Jun 18 2024 23:49:53 GMT+0000 (Coordinated Universal Time)
2
+ * @esri/arcgis-rest-places - v1.2.0 - Apache-2.0
3
+ * Copyright (c) 2017-2025 Esri, Inc.
4
+ * Mon May 12 2025 21:29:23 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
6
  (function (global, factory) {
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@esri/arcgis-rest-request')) :
@@ -58,7 +58,16 @@
58
58
  * ```
59
59
  */
60
60
  function findPlacesNearPoint(requestOptions) {
61
- const options = arcgisRestRequest.appendCustomParams(requestOptions, ["x", "y", "radius", "categoryIds", "pageSize", "offset", "searchText"], Object.assign({}, requestOptions));
61
+ const options = arcgisRestRequest.appendCustomParams(requestOptions, [
62
+ "x",
63
+ "y",
64
+ "radius",
65
+ "categoryIds",
66
+ "pageSize",
67
+ "offset",
68
+ "searchText",
69
+ "icon"
70
+ ], Object.assign({}, requestOptions));
62
71
  return arcgisRestRequest.request(requestOptions.endpoint || `${baseUrl}/places/near-point`, Object.assign(Object.assign({}, options), { httpMethod: "GET" })).then((response) => {
63
72
  const r = Object.assign({}, response);
64
73
  if (hasNextPage(response)) {
@@ -117,7 +126,8 @@
117
126
  "categoryIds",
118
127
  "pageSize",
119
128
  "offset",
120
- "searchText"
129
+ "searchText",
130
+ "icon"
121
131
  ], Object.assign({}, requestOptions));
122
132
  return arcgisRestRequest.request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, Object.assign(Object.assign({}, options), { httpMethod: "GET" })).then((response) => {
123
133
  const r = Object.assign({}, response);
@@ -161,7 +171,7 @@
161
171
  */
162
172
  function getPlaceDetails(requestOptions) {
163
173
  const { placeId } = requestOptions;
164
- const options = arcgisRestRequest.appendCustomParams(requestOptions, ["requestedFields"], Object.assign({}, requestOptions));
174
+ const options = arcgisRestRequest.appendCustomParams(requestOptions, ["requestedFields", "icon"], Object.assign({}, requestOptions));
165
175
  return arcgisRestRequest.request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, Object.assign(Object.assign({}, options), { httpMethod: "GET" }));
166
176
  }
167
177
 
@@ -188,7 +198,7 @@
188
198
  * ```
189
199
  */
190
200
  function getCategories(requestOptions) {
191
- const options = arcgisRestRequest.appendCustomParams(requestOptions, ["filter"], Object.assign({}, requestOptions));
201
+ const options = arcgisRestRequest.appendCustomParams(requestOptions, ["filter", "icon"], Object.assign({}, requestOptions));
192
202
  return arcgisRestRequest.request(requestOptions.endpoint || `${baseUrl}/categories`, Object.assign(Object.assign({}, options), { httpMethod: "GET" }));
193
203
  }
194
204
 
@@ -209,10 +219,24 @@
209
219
  **/
210
220
  function getCategory(requestOptions) {
211
221
  const { categoryId } = requestOptions;
212
- const options = arcgisRestRequest.appendCustomParams(requestOptions, [], Object.assign({}, requestOptions));
222
+ const options = arcgisRestRequest.appendCustomParams(requestOptions, ["icon"], Object.assign({}, requestOptions));
213
223
  return arcgisRestRequest.request(requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`, Object.assign(Object.assign({}, options), { httpMethod: "GET" }));
214
224
  }
215
225
 
226
+ /*
227
+ Use this parameter to define the type of icon URL for a given place or category. Place icons are available in the following formats:
228
+
229
+ svg
230
+ cim (Cartographic Information Model)
231
+ png 48 x 48 pixels
232
+ */
233
+ exports.IconOptions = void 0;
234
+ (function (IconOptions) {
235
+ IconOptions["PNG"] = "png";
236
+ IconOptions["SVG"] = "svg";
237
+ IconOptions["CIM"] = "cim";
238
+ })(exports.IconOptions || (exports.IconOptions = {}));
239
+
216
240
  exports.findPlacesNearPoint = findPlacesNearPoint;
217
241
  exports.findPlacesWithinExtent = findPlacesWithinExtent;
218
242
  exports.getCategories = getCategories;
@@ -1 +1 @@
1
- {"version":3,"file":"places.umd.js","sources":["../../src/utils.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getPlaceDetails.ts","../../src/getCategories.ts","../../src/getCategory.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\"x\", \"y\", \"radius\", \"categoryIds\", \"pageSize\", \"offset\", \"searchText\"],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(requestOptions, [], {\n ...requestOptions\n });\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n"],"names":["appendCustomParams","request"],"mappings":"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"}
1
+ {"version":3,"file":"places.umd.js","sources":["../../src/utils.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getPlaceDetails.ts","../../src/getCategories.ts","../../src/getCategory.ts","../../src/iconOptions.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\n \"x\",\n \"y\",\n \"radius\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n icon?: IconOptions;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(\n requestOptions,\n [\"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n","/*\nUse this parameter to define the type of icon URL for a given place or category. Place icons are available in the following formats:\n\n svg\n cim (Cartographic Information Model)\n png 48 x 48 pixels\n*/\n\nexport enum IconOptions {\n PNG = \"png\",\n SVG = \"svg\",\n CIM = \"cim\"\n}\n"],"names":["appendCustomParams","request","IconOptions"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /* @preserve
2
- * @esri/arcgis-rest-places - v1.0.2 - Apache-2.0
3
- * Copyright (c) 2017-2024 Esri, Inc.
4
- * Tue Jun 18 2024 23:49:53 GMT+0000 (Coordinated Universal Time)
2
+ * @esri/arcgis-rest-places - v1.2.0 - Apache-2.0
3
+ * Copyright (c) 2017-2025 Esri, Inc.
4
+ * Mon May 12 2025 21:29:23 GMT+0000 (Coordinated Universal Time)
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@esri/arcgis-rest-request")):"function"==typeof define&&define.amd?define(["exports","@esri/arcgis-rest-request"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).arcgisRest=e.arcgisRest||{},e.arcgisRest)}(this,(function(e,t){"use strict";const s="https://places-api.arcgis.com/arcgis/rest/services/places-service/v1";function n(e){var t,s;return!!(null===(t=null==e?void 0:e.links)||void 0===t?void 0:t.next)||!!(null===(s=null==e?void 0:e.pagination)||void 0===s?void 0:s.nextUrl)}function i(e=0,t=10){return{offset:e+t,pageSize:t}}e.findPlacesNearPoint=function e(a){const c=t.appendCustomParams(a,["x","y","radius","categoryIds","pageSize","offset","searchText"],Object.assign({},a));return t.request(a.endpoint||`${s}/places/near-point`,Object.assign(Object.assign({},c),{httpMethod:"GET"})).then((t=>{const s=Object.assign({},t);return n(t)&&(s.nextPage=()=>e(Object.assign(Object.assign({},a),i(a.offset,a.pageSize)))),s}))},e.findPlacesWithinExtent=function e(a){const c=t.appendCustomParams(a,["xmin","ymin","xmax","ymax","categoryIds","pageSize","offset","searchText"],Object.assign({},a));return t.request(a.endpoint||`${s}/places/within-extent`,Object.assign(Object.assign({},c),{httpMethod:"GET"})).then((t=>{const s=Object.assign({},t);return n(t)&&(s.nextPage=()=>e(Object.assign(Object.assign({},a),i(a.offset,a.pageSize)))),s}))},e.getCategories=function(e){const n=t.appendCustomParams(e,["filter"],Object.assign({},e));return t.request(e.endpoint||`${s}/categories`,Object.assign(Object.assign({},n),{httpMethod:"GET"}))},e.getCategory=function(e){const{categoryId:n}=e,i=t.appendCustomParams(e,[],Object.assign({},e));return t.request(e.endpoint||`${s}/categories/${n}`,Object.assign(Object.assign({},i),{httpMethod:"GET"}))},e.getPlaceDetails=function(e){const{placeId:n}=e,i=t.appendCustomParams(e,["requestedFields"],Object.assign({},e));return t.request(e.endpoint||`${s}/places/${n}`,Object.assign(Object.assign({},i),{httpMethod:"GET"}))},Object.defineProperty(e,"__esModule",{value:!0})}));
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@esri/arcgis-rest-request")):"function"==typeof define&&define.amd?define(["exports","@esri/arcgis-rest-request"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).arcgisRest=e.arcgisRest||{},e.arcgisRest)}(this,(function(e,t){"use strict";const s="https://places-api.arcgis.com/arcgis/rest/services/places-service/v1";function n(e){var t,s;return!!(null===(t=null==e?void 0:e.links)||void 0===t?void 0:t.next)||!!(null===(s=null==e?void 0:e.pagination)||void 0===s?void 0:s.nextUrl)}function i(e=0,t=10){return{offset:e+t,pageSize:t}}var a;e.IconOptions=void 0,(a=e.IconOptions||(e.IconOptions={})).PNG="png",a.SVG="svg",a.CIM="cim",e.findPlacesNearPoint=function e(a){const o=t.appendCustomParams(a,["x","y","radius","categoryIds","pageSize","offset","searchText","icon"],Object.assign({},a));return t.request(a.endpoint||`${s}/places/near-point`,Object.assign(Object.assign({},o),{httpMethod:"GET"})).then((t=>{const s=Object.assign({},t);return n(t)&&(s.nextPage=()=>e(Object.assign(Object.assign({},a),i(a.offset,a.pageSize)))),s}))},e.findPlacesWithinExtent=function e(a){const o=t.appendCustomParams(a,["xmin","ymin","xmax","ymax","categoryIds","pageSize","offset","searchText","icon"],Object.assign({},a));return t.request(a.endpoint||`${s}/places/within-extent`,Object.assign(Object.assign({},o),{httpMethod:"GET"})).then((t=>{const s=Object.assign({},t);return n(t)&&(s.nextPage=()=>e(Object.assign(Object.assign({},a),i(a.offset,a.pageSize)))),s}))},e.getCategories=function(e){const n=t.appendCustomParams(e,["filter","icon"],Object.assign({},e));return t.request(e.endpoint||`${s}/categories`,Object.assign(Object.assign({},n),{httpMethod:"GET"}))},e.getCategory=function(e){const{categoryId:n}=e,i=t.appendCustomParams(e,["icon"],Object.assign({},e));return t.request(e.endpoint||`${s}/categories/${n}`,Object.assign(Object.assign({},i),{httpMethod:"GET"}))},e.getPlaceDetails=function(e){const{placeId:n}=e,i=t.appendCustomParams(e,["requestedFields","icon"],Object.assign({},e));return t.request(e.endpoint||`${s}/places/${n}`,Object.assign(Object.assign({},i),{httpMethod:"GET"}))},Object.defineProperty(e,"__esModule",{value:!0})}));
7
7
  //# sourceMappingURL=places.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"places.umd.min.js","sources":["../../src/utils.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getCategories.ts","../../src/getCategory.ts","../../src/getPlaceDetails.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\"x\", \"y\", \"radius\", \"categoryIds\", \"pageSize\", \"offset\", \"searchText\"],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(requestOptions, [], {\n ...requestOptions\n });\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n"],"names":["baseUrl","hasNextPage","response","links","next","pagination","nextUrl","getNextPageParams","currentOffset","currentPageSize","offset","pageSize","findPlacesNearPoint","requestOptions","options","appendCustomParams","request","endpoint","httpMethod","then","r","nextPage","findPlacesWithinExtent","categoryId","placeId"],"mappings":";;;;;gVAAO,MAAMA,EACX,gFAEcC,EAAYC,WAC1B,mBAASA,eAAAA,EAAUC,4BAAOC,oBAAUF,eAAAA,EAAUG,iCAAYC,QAC5D,UAEgBC,EAAkBC,EAAgB,EAAGC,EAAkB,IACrE,MAAO,CACLC,OAAQF,EAAgBC,EACxBE,SAAUF,EAEd,gCCgEgBG,EACdC,GAEA,MAAMC,EAAUC,qBACdF,EACA,CAAC,IAAK,IAAK,SAAU,cAAe,WAAY,SAAU,+BAErDA,IAIP,OACEG,UAAQH,EAAeI,UAAY,GAAGjB,qDACjCc,IACHI,WAAY,SAEdC,MAAMjB,IACN,MAAMkB,mBACDlB,GAaL,OAVID,EAAYC,KACdkB,EAAEC,SAAW,IAKJT,iCAHFC,GACAN,EAAkBM,EAAeH,OAAQG,EAAeF,aAM1DS,CAAC,GAEZ,oCCzBgBE,EACdT,GAEA,MAAMC,EAAUC,qBACdF,EACA,CACE,OACA,OACA,OACA,OACA,cACA,WACA,SACA,+BAGGA,IAIP,OACEG,UAAQH,EAAeI,UAAY,GAAGjB,wDACjCc,IACHI,WAAY,SAEdC,MAAMjB,IACN,MAAMkB,mBACDlB,GAYL,OATID,EAAYC,KACdkB,EAAEC,SAAW,IAKJC,iCAHFT,GACAN,EAAkBM,EAAeH,OAAQG,EAAeF,aAK1DS,CAAC,GAEZ,2BChEEP,GAEA,MAAMC,EAAUC,qBACdF,EACA,CAAC,2BAEIA,IAIP,OAAOG,UAAQH,EAAeI,UAAY,GAAGjB,8CACxCc,IACHI,WAAY,QAEhB,yBCvBEL,GAEA,MAAMU,WAAEA,GAAeV,EAEjBC,EAAUC,qBAAwCF,EAAgB,oBACnEA,IAGL,OAAOG,UACLH,EAAeI,UAAY,GAAGjB,gBAAsBuB,mCAE/CT,IACHI,WAAY,QAGlB,6BCCEL,GAEA,MAAMW,QAAEA,GAAYX,EAEdC,EAAUC,qBACdF,EACA,CAAC,oCAEIA,IAIP,OAAOG,UAAQH,EAAeI,UAAY,GAAGjB,YAAkBwB,mCAC1DV,IACHI,WAAY,QAEhB"}
1
+ {"version":3,"file":"places.umd.min.js","sources":["../../src/utils.ts","../../src/iconOptions.ts","../../src/findPlacesNearPoint.ts","../../src/findPlacesWithinExtent.ts","../../src/getCategories.ts","../../src/getCategory.ts","../../src/getPlaceDetails.ts"],"sourcesContent":["export const baseUrl =\n \"https://places-api.arcgis.com/arcgis/rest/services/places-service/v1\";\n\nexport function hasNextPage(response: any) {\n return !!response?.links?.next || !!response?.pagination?.nextUrl;\n}\n\nexport function getNextPageParams(currentOffset = 0, currentPageSize = 10) {\n return {\n offset: currentOffset + currentPageSize,\n pageSize: currentPageSize\n };\n}\n","/*\nUse this parameter to define the type of icon URL for a given place or category. Place icons are available in the following formats:\n\n svg\n cim (Cartographic Information Model)\n png 48 x 48 pixels\n*/\n\nexport enum IconOptions {\n PNG = \"png\",\n SVG = \"svg\",\n CIM = \"cim\"\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"nearPointGet\"][\"parameters\"][\"query\"],\n \"x\" | \"y\" | \"radius\" | \"categoryIds\" | \"pageSize\" | \"offset\" | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"nearPointGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesNearPoint};\n */\nexport interface IFindPlacesNearPointResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesNearPointResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlacesNearPointOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches places that are within a given radius of a geographic point.\n * You must supply the `x` and `y` coordinates of the point that you wish\n * to search from. You can either specify a search radius, or use the\n * default (500 meters). You could use this method to search for places\n * around a user's GPS position, or a location clicked on a map.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```js\n * import { findPlacesNearPoint } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await findPlacesNearPoint({\n * x: -3.1883,\n * y: 55.9533,\n * radius: 100,\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\");\n * });\n *\n * console.log(response);\n * ```\n */\nexport function findPlacesNearPoint(\n requestOptions: IFindPlacesNearPointOptions\n): Promise<IFindPlacesNearPointResponse> {\n const options = appendCustomParams<IFindPlacesNearPointOptions>(\n requestOptions,\n [\n \"x\",\n \"y\",\n \"radius\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/near-point`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesNearPointResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesNearPoint(nextOptions);\n };\n }\n\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl, hasNextPage, getNextPageParams } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"withinExtentGet\"][\"parameters\"][\"query\"],\n | \"xmin\"\n | \"ymin\"\n | \"xmax\"\n | \"ymax\"\n | \"categoryIds\"\n | \"pageSize\"\n | \"offset\"\n | \"searchText\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"withinExtentGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode findPlacesWithinExtent};\n */\nexport interface IFindPlacesWithinExtentResponse extends successResponse {\n nextPage?: () => Promise<IFindPlacesWithinExtentResponse>;\n}\n\n/**\n * Options for {@linkcode findPlacesNearPoint}.\n */\nexport interface IFindPlaceWithinExtentOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Searches the world-wide set of places for those that are within an\n * extent, or bounding box. You must supply the `xmin`, `ymin`, `xmax` and\n * `ymax` coordinates of the extent. You could use this endpoint to search\n * for places in the visible extent of a user's screen.\n *\n * The returned places contain basic data such as name, category and\n * location. You can use the {@linkcode getPlace} method to get additional\n * details for a given place.\n *\n * You can also refine the results by supplying additional search parameters,\n * including:\n *\n * - A list of category Ids, see {@linkcode searchCategories} or {@linkcode getCategories}.\n * - A partial name filter with `name` option\n *\n * As this request can return many results, pagination is supported.\n * When a query results in more than [pageSize] places, the response will contain the property\n * `pagination` in addition to place results. If `pagination` exists, an additional method\n * `response.nextPage()` can be used to get the next page of results.\n *\n * ```\n * import { findPlacesWithinExtent } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const results = await findPlacesWithinExtent({\n * xmin: -118.013334,\n * ymin: 33.78193,\n * xmax: -117.795753,\n * ymax: 33.873337,\n * categoryIds: [\"13002\"],\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(results)\n * ```\n */\nexport function findPlacesWithinExtent(\n requestOptions: IFindPlaceWithinExtentOptions\n): Promise<IFindPlacesWithinExtentResponse> {\n const options = appendCustomParams<IFindPlaceWithinExtentOptions>(\n requestOptions,\n [\n \"xmin\",\n \"ymin\",\n \"xmax\",\n \"ymax\",\n \"categoryIds\",\n \"pageSize\",\n \"offset\",\n \"searchText\",\n \"icon\"\n ],\n {\n ...requestOptions\n }\n );\n\n return (\n request(requestOptions.endpoint || `${baseUrl}/places/within-extent`, {\n ...options,\n httpMethod: \"GET\"\n }) as Promise<successResponse>\n ).then((response) => {\n const r: IFindPlacesWithinExtentResponse = {\n ...response\n };\n\n if (hasNextPage(response)) {\n r.nextPage = () => {\n const nextOptions = {\n ...requestOptions,\n ...getNextPageParams(requestOptions.offset, requestOptions.pageSize)\n };\n return findPlacesWithinExtent(nextOptions);\n };\n }\n return r;\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"categoriesGet\"][\"parameters\"][\"query\"],\n \"filter\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategories};\n */\nexport interface IGetCategoriesResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategories}.\n */\nexport interface IGetCategoriesOptions\n extends Omit<IRequestOptions, \"httpMethod\" | \"f\">,\n queryParams {\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * The ArcGIS Places service has many categories (or types) of place, from\n * art museums to zoos. This endpoint returns all the categories including\n * their label and `categoryId`. The category Id can be used to search for\n * types of places with a `places/near-point` or `places/within-extent`\n * request.\n *\n * Categories also have information on their `parent`. This allows you to\n * search for specific categories such as \"French Restaurant\" - or to\n * look for more generic types such as \"Restaurant\".\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = await getCategories({\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response.categories);\n * ```\n */\nexport function getCategories(\n requestOptions: IGetCategoriesOptions\n): Promise<IGetCategoriesResponse> {\n const options = appendCustomParams<IGetCategoriesOptions>(\n requestOptions,\n [\"filter\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/categories`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = operations[\"categoriesCategoryIdGet\"][\"parameters\"][\"query\"];\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"categoriesCategoryIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getCategory};\n */\nexport interface IGetCategoryResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getCategory}.\n */\nexport interface IGetCategoryOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n categoryId: string;\n icon?: IconOptions;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n}\n\n/**\n * Returns details about a single category by Id.\n *\n * ```js\n * import { getCategories } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const response = getCategory({\n * categoryId: \"10000\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(response);\n * ```\n **/\nexport function getCategory(\n requestOptions: IGetCategoryOptions\n): Promise<IGetCategoryResponse> {\n const { categoryId } = requestOptions;\n\n const options = appendCustomParams<IGetCategoryOptions>(\n requestOptions,\n [\"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(\n requestOptions.endpoint || `${baseUrl}/categories/${categoryId}`,\n {\n ...options,\n httpMethod: \"GET\"\n }\n );\n}\n","import {\n request,\n appendCustomParams,\n IRequestOptions\n} from \"@esri/arcgis-rest-request\";\n\nimport { operations } from \"./openapi-types.js\";\nimport { baseUrl } from \"./utils.js\";\nimport { IconOptions } from \"./iconOptions.js\";\n\n// determine the list of allowed params we want to allow as options\n// this should match the array given to appendCustomParams below\ntype queryParams = Pick<\n operations[\"placeIdGet\"][\"parameters\"][\"query\"],\n \"requestedFields\"\n>;\n\n// get the correct type of the response format\ntype successResponse =\n operations[\"placeIdGet\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\n/**\n * The response format for {@linkcode getPlace};\n */\nexport interface IGetPlaceResponse extends successResponse {}\n\n/**\n * Options for {@linkcode getPlace}.\n */\nexport interface IGetPlaceOptions\n extends Omit<IRequestOptions, \"httpMethod\">,\n queryParams {\n placeId: string;\n /**\n * Override the URL. This should be the full URL to the API endpoint you want to call. Used internally by Esri staff for testing.\n * @private\n */\n endpoint?: string;\n icon?: IconOptions;\n}\n\n/**\n * Returns a single place, including additional details, such as:\n *\n * - contact details\n * - address\n * - price information\n * - user rating\n * - opening hours\n *\n * This endpoint can be used to fetch additional details for a specific\n * place, returned from a places search request.\n *\n * Note that some fields, such as opening hours, are not available for\n * every place. Where a field is not available it will be omitted from the\n * response and you will not be charged for this data.\n *\n * ```js\n * import { getPlaceDetails } from \"@esri/arcgis-rest-places\";\n * import { ApiKeyManager } from \"@esri/arcgis-rest-request\";\n *\n * const place = getPlaceDetails({\n * placeId: \"e78051acc722c55ab11ba930d8dd7772\",\n * authentication: ApiKeyManager.fromKey(\"YOUR_API_KEY\")\n * });\n *\n * console.log(place);\n * ```\n */\nexport function getPlaceDetails(\n requestOptions: IGetPlaceOptions\n): Promise<IGetPlaceResponse> {\n const { placeId } = requestOptions;\n\n const options = appendCustomParams<IGetPlaceOptions>(\n requestOptions,\n [\"requestedFields\", \"icon\"],\n {\n ...requestOptions\n }\n );\n\n return request(requestOptions.endpoint || `${baseUrl}/places/${placeId}`, {\n ...options,\n httpMethod: \"GET\"\n });\n}\n"],"names":["baseUrl","hasNextPage","response","links","next","pagination","nextUrl","getNextPageParams","currentOffset","currentPageSize","offset","pageSize","IconOptions","findPlacesNearPoint","requestOptions","options","appendCustomParams","request","endpoint","httpMethod","then","r","nextPage","findPlacesWithinExtent","categoryId","placeId"],"mappings":";;;;;gVAAO,MAAMA,EACX,gFAEcC,EAAYC,WAC1B,mBAASA,eAAAA,EAAUC,4BAAOC,oBAAUF,eAAAA,EAAUG,iCAAYC,QAC5D,UAEgBC,EAAkBC,EAAgB,EAAGC,EAAkB,IACrE,MAAO,CACLC,OAAQF,EAAgBC,EACxBE,SAAUF,EAEd,CCJA,IAAYG,wBAAAA,EAAAA,gBAAAA,6BAEVA,YACAA,2CCmEcC,EACdC,GAEA,MAAMC,EAAUC,qBACdF,EACA,CACE,IACA,IACA,SACA,cACA,WACA,SACA,aACA,yBAGGA,IAIP,OACEG,UAAQH,EAAeI,UAAY,GAAGlB,qDACjCe,IACHI,WAAY,SAEdC,MAAMlB,IACN,MAAMmB,mBACDnB,GAaL,OAVID,EAAYC,KACdmB,EAAEC,SAAW,IAKJT,iCAHFC,GACAP,EAAkBO,EAAeJ,OAAQI,EAAeH,aAM1DU,CAAC,GAEZ,oCClCgBE,EACdT,GAEA,MAAMC,EAAUC,qBACdF,EACA,CACE,OACA,OACA,OACA,OACA,cACA,WACA,SACA,aACA,yBAGGA,IAIP,OACEG,UAAQH,EAAeI,UAAY,GAAGlB,wDACjCe,IACHI,WAAY,SAEdC,MAAMlB,IACN,MAAMmB,mBACDnB,GAYL,OATID,EAAYC,KACdmB,EAAEC,SAAW,IAKJC,iCAHFT,GACAP,EAAkBO,EAAeJ,OAAQI,EAAeH,aAK1DU,CAAC,GAEZ,2BCjEEP,GAEA,MAAMC,EAAUC,qBACdF,EACA,CAAC,SAAU,yBAENA,IAIP,OAAOG,UAAQH,EAAeI,UAAY,GAAGlB,8CACxCe,IACHI,WAAY,QAEhB,yBCvBEL,GAEA,MAAMU,WAAEA,GAAeV,EAEjBC,EAAUC,qBACdF,EACA,CAAC,yBAEIA,IAIP,OAAOG,UACLH,EAAeI,UAAY,GAAGlB,gBAAsBwB,mCAE/CT,IACHI,WAAY,QAGlB,6BCHEL,GAEA,MAAMW,QAAEA,GAAYX,EAEdC,EAAUC,qBACdF,EACA,CAAC,kBAAmB,yBAEfA,IAIP,OAAOG,UAAQH,EAAeI,UAAY,GAAGlB,YAAkByB,mCAC1DV,IACHI,WAAY,QAEhB"}