@parseapi/sdk 0.3.2 → 0.4.0

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.
package/README.md CHANGED
@@ -15,6 +15,34 @@ const country = await parse.country('US');
15
15
 
16
16
  Get a key at [parseapi.com](https://parseapi.com). The client also reads `PARSEAPI_KEY` from the environment.
17
17
 
18
+ ## API versions
19
+
20
+ Choose your team's API version in [Dashboard → API version](https://parseapi.com/dashboard/versions). One setting applies to every key, including new and replacement keys. Existing teams keep `1.0.0`; new teams start on `2.0.0`. Keep the same keys and lookup URLs. Installing or upgrading the package does not change the team's setting.
21
+
22
+ Published SDK `0.3.2` matches API `1.0.0`. The examples and response types in this source tree target API `2.0.0`, including changes that are not in `0.3.2`. Use a package release documented for your team's version. These types do not model every historical response; moving to `2.0.0` may require updating code that reads renamed, moved or removed fields.
23
+
24
+ Test the target contract in a separate development team before changing your production team's version. A change applies to every integration in that team. See [API versions and migration](https://parseapi.com/docs/versioning).
25
+
26
+ ## Weather from a postal code
27
+
28
+ Start with the postal code, then pass its coordinates to weather. Reuse the client from the example above.
29
+
30
+ ```ts
31
+ const place = await parse.postal('28202', { country: 'US' });
32
+ if (place.latitude != null && place.longitude != null) {
33
+ const weather = await parse.weather(place.latitude, place.longitude);
34
+ console.log(weather);
35
+ }
36
+ ```
37
+
38
+ The coordinates represent the postal area. Weather is for that point. Missing coordinates skip the weather lookup. This composition performs two ordinary lookups when coordinates are available, with the retry policy below.
39
+
40
+ ## Supply the context you know
41
+
42
+ Pass `country` when a postal code or national phone number needs disambiguation. A complete international phone number already carries its country context. For a numeric date such as `03/04/2026`, supply the intended `format`. Defaults resolve what the input establishes. Ambiguous input needs your context.
43
+
44
+ Results are plain data. Pass a returned code or coordinate to another operation when the task needs it. Check nullable values before composing the next call.
45
+
18
46
  ## Calls
19
47
 
20
48
  One method per endpoint, named after the route.
@@ -25,6 +53,7 @@ await parse.ip.self();
25
53
  await parse.email('hello@gmail.com');
26
54
  await parse.vat('DE136695976');
27
55
  await parse.iban('DE89370400440532013000');
56
+ await parse.bin('424242');
28
57
  await parse.npi('1881018208');
29
58
  await parse.phone('+14155552671');
30
59
  await parse.carrier('+14155552671');
@@ -57,8 +86,11 @@ await parse.currency('USD');
57
86
  await parse.currency.rate('USD', 'EUR');
58
87
  await parse.language('en');
59
88
  await parse.name('BILLY OSHALL');
60
- await parse.timezone('America/New_York');
61
- await parse.timezone.at(40.7128, -74.006);
89
+ await parse.name('Andrea', { country: 'IT', deep: true });
90
+ await parse.time(); // UTC now
91
+ await parse.time('America/New_York');
92
+ await parse.time('America/New_York', { at: '2026-09-05T15:00:00', to: 'Asia/Tokyo' });
93
+ await parse.time.at(40.7128, -74.006);
62
94
  await parse.date('03/04/2026', { format: 'mdy' });
63
95
  await parse.date.today();
64
96
  await parse.holiday('US', { year: 2026 });
@@ -70,19 +102,90 @@ await parse.domain('example.com');
70
102
  await parse.asn('AS13335');
71
103
  await parse.mac('00:1B:63:84:45:E6');
72
104
  await parse.mx('example.com');
105
+ await parse.dns('example.com');
106
+ await parse.dns('_dmarc.example.com', { type: 'TXT' });
73
107
  await parse.useragent(uaString);
74
108
  await parse.vin('1HGCM82633A004352');
109
+ await parse.naics('541511');
110
+ await parse.naics.search('coffee shop', { limit: 5 });
75
111
  await parse.tariff('8471.30.01.00');
76
112
  await parse.tariff.search('sunglasses');
77
113
  await parse.emoji('rocket');
78
114
  await parse.emoji.search('fire');
79
115
  ```
80
116
 
117
+ NAICS paid deep records include classification `deep.exclusions`, each with a description and linked codes. Generic exclusions can have no linked codes. Omitted or null exclusions in older responses remain unknown. Search results also include `match`: the matched `field` (`name`, `term` or `naics`) and `text`, plus `corrections` with `from` and `to` tokens for typo fallback. Corrections are empty for exact, plural and prefix matches. Direct code lookups omit `match`. Older responses may omit it.
118
+
81
119
  Responses are typed, plain JSON data. `country.states('US')` requests the states directly; it does not fetch a country first. Optional arguments go in the final options object, so new options can be added without changing your existing calls.
82
120
 
121
+ DNS uses pooled requests on every plan. Omit `type` to check A, AAAA, CNAME, MX, NS, TXT, SOA, CAA, SRV and PTR. Records contain `name`, `type`, `ttl` in seconds and a DNS presentation `value`. TXT values retain quoting and chunk boundaries. A selected question can include its CNAME chain. Empty records mean no records. Lookup failures remain errors.
122
+
123
+ ## Time
124
+
125
+ `time` returns local ISO `at` with its UTC offset and integer Unix seconds in `unix`. The core `offset` preserves exact precision. Optional `deep.offset_seconds` gives the numeric offset, while `deep.offset_minutes` gives whole minutes. Historical offsets and ISO times can include offset seconds. Omitted `at` means now. With `to`, an offsetless `at` is source wall time. Otherwise it is UTC. Include an offset for repeated local times around a clock change. Current time and conversion use pooled requests on every plan. Coordinate clock fields can be null when the timezone is unknown. Existing `timezone` methods remain supported.
126
+
127
+ ## Measurements
128
+
129
+ ```ts
130
+ const result = await parse.measure('5 ft 11 in', { to: 'cm' });
131
+ const units = await parse.measure.units({ unit: 'm' });
132
+ ```
133
+
134
+ `amount` is a decimal string, such as `"180.34"`. Without `to`, the API returns the canonical unit for the measurement type. Pass `locale` for number formatting and `system` (`us` or `imperial`) when a customary unit needs context. Ambiguous input returns `valid: false`, a `reason`, and available `choices`. Invalid or incompatible target units use the normal API error.
135
+
136
+ Unit discovery accepts optional `query`, `type`, and `unit` filters. `unit` selects compatible targets. Omit the filters for the reviewed catalog. Both operations use pooled requests.
137
+
138
+ ## Place statistics and optional detail
139
+
140
+ Postal and District paid profiles include `deep.property_tax` where supported. It contains `annual_median`, `currency` and `period`: median annual property tax payable on owner-occupied homes in the statistical area. The amount is adjusted to the final year of the reporting period (`YYYY-YYYY`). This is an area statistic, not a rate or an individual property bill. Unsupported, missing and censored estimates are null.
141
+
142
+ ```ts
143
+ const place = await parse.postal('28202', { country: 'US', deep: true });
144
+ const propertyTax = place.deep?.property_tax;
145
+ ```
146
+
147
+ Read `population_period` alongside `population`: a reporting year (`YYYY`) or period (`YYYY-YYYY`), null when unknown or unverifiable. Keep missing or null values unknown and preserve a known zero. These fields belong to full place profiles. State district lists include each district's population and period. Postal nearby and distance detail remains metropolitan associations only. Continent population and its period remain in core.
148
+
149
+ Point returns the timezone ID with the core location. Its optional deep detail adds terrain and compact nearest-city context on every plan. A nearest city is null when none is within 200 km.
150
+
151
+ Weather returns current conditions by default. Paid deep adds specialist current measurements, forecasts and related detail. A past `date` is a UTC day and requires deep: it adds `deep.history` alongside current conditions. Date alone does not request history.
152
+
153
+ ```ts
154
+ await parse.weather(40.7128, -74.006, { deep: true, date: '2026-08-15' });
155
+ ```
156
+
157
+ Tariff starts with the general schedule line. Paid deep adds units and the special and other schedule columns. An optional origin then resolves country-specific measures. The three calls below show those successive choices. Without origin, schedule detail is still returned and origin-dependent fields are null. A null effective rate is not a zero rate.
158
+
159
+ ```ts
160
+ await parse.tariff('8471.30.01.00');
161
+ await parse.tariff('8471.30.01.00', { deep: true });
162
+ await parse.tariff('8471.30.01.00', { deep: true, origin: 'CN' });
163
+ ```
164
+
165
+ Address search uses context from the form: prefer postal, or city and state. An optional end-user `ip` is a locality hint for server-side calls. An empty result explains itself with `reason`: `more_input`, `missing_context` or `no_matches`. With suggestions, reason is null. Older responses may omit it, and future reasons remain strings. Catalog and lookup failures use the existing API errors.
166
+
167
+ HLR reports status at the last check. `live` means assigned and `connected` means reachable at that check. Cached results may be returned. Null means unconfirmed. Deep diagnostics stay within the same metered lookup.
168
+
83
169
  ## Deep
84
170
 
85
- Pass `deep: true` to include the nested `deep` object with richer fields.
171
+ Choose enrichment for the question you need answered.
172
+
173
+ | Operation | What `deep` requests |
174
+ |---|---|
175
+ | IP | Richer IP fields included with a paid plan. No separate check meter. |
176
+ | Domain | Registration dates, registrar, status and DNSSEC, included with a paid plan. Use `dns` for DNS records and `mx` for mail routing. |
177
+ | Email | A metered deliverability check, using included email checks or enabled on-demand usage. |
178
+ | VAT | A metered registry check where supported, using included VAT checks or enabled on-demand usage. |
179
+ | Phone, Time, Date, Currency, Language, Emoji, IBAN, Point | Optional detail in the same pooled request on every plan. |
180
+ | Country, State, District, City, Postal | The place profile on paid plans, including demographic and tax facts where held. |
181
+ | Name, NAICS | Name evidence or the industry definition profile on paid plans. |
182
+ | VIN, NPI, Tariff, Company | The complete product detail bag on paid plans. |
183
+ | Weather | Specialist current measurements and the existing forecast, alert, air and history bag on paid plans. |
184
+ | Carrier, HLR | Optional diagnostic detail within the same metered core unit, including Free allowance units. No second gate or additional check. |
185
+
186
+ Carrier, caller, and HLR are separate metered operations. Choose them explicitly when you need their answers. Ordinary lookups retry twice by default. Metered checks use one attempt by default. Setting retries explicitly can repeat paid usage.
187
+
188
+ Without `deep`, the response omits that key. When requested, it is an empty object if access is locked or the operation has no deep fields. Otherwise it contains the available fields. A missing or null field means unknown.
86
189
 
87
190
  ```ts
88
191
  const ip = await parse.ip('52.94.76.10', { deep: true });
@@ -131,3 +234,16 @@ An explicit `retries` setting on the client or call overrides those defaults. An
131
234
  ## Docs
132
235
 
133
236
  Full field reference for every endpoint: [parseapi.com/docs](https://parseapi.com/docs)
237
+
238
+ BIN lookup accepts 6-11 digits as a string, including leading zeros. Spaces and hyphens are accepted. `prefix` is the actual longest match and can be shorter than the input. Unknown reference fields are null. `deep` adds an empty object on every plan.
239
+
240
+
241
+ ## Optional detail
242
+
243
+ The default response answers the common task. Ask for `deep` when you need more detail about that same result. Core fields stay equal. City, NAICS and Emoji searches put detail inside each result. Postal nearby and distance put metropolitan detail beside the entity it describes. Time conversion keeps target detail in `to.deep`; only the source has `deep.next_dst`.
244
+
245
+ ```ts
246
+ const basic = await parse.time('America/New_York');
247
+ const detail = await parse.time('America/New_York', { deep: true });
248
+ console.log(basic.at, detail.deep?.next_dst);
249
+ ```
package/dist/index.cjs CHANGED
@@ -24,7 +24,7 @@ __export(index_exports, {
24
24
  parseAPI: () => parseAPI
25
25
  });
26
26
  module.exports = __toCommonJS(index_exports);
27
- var VERSION = "0.3.2";
27
+ var VERSION = "0.4.0";
28
28
  var DEFAULT_BASE_URL = "https://api.parseapi.com";
29
29
  var DEFAULT_TIMEOUT_MS = 1e4;
30
30
  var DEFAULT_RETRIES = 2;
@@ -179,9 +179,11 @@ function parseAPI(apiKey, options = {}) {
179
179
  const enc = encodeURIComponent;
180
180
  const deepQuery = (opts) => opts?.deep ? { deep: true } : {};
181
181
  return {
182
+ /** Look up an IP. `deep: true` adds enrichment included with a paid plan, without a separate check meter. */
182
183
  ip: Object.assign(
183
184
  (ip, opts) => request(`/ip/${enc(ip)}`, deepQuery(opts), void 0, opts),
184
185
  {
186
+ /** Look up the public IP making this request. On a server, this is the server's IP. */
185
187
  self: (opts) => request("/ip", deepQuery(opts), void 0, opts)
186
188
  }
187
189
  ),
@@ -198,69 +200,104 @@ function parseAPI(apiKey, options = {}) {
198
200
  }
199
201
  ),
200
202
  country: Object.assign(
201
- (code, opts) => request(`/country/${enc(code)}`, void 0, void 0, opts),
203
+ (code, opts) => request(`/country/${enc(code)}`, deepQuery(opts), void 0, opts),
202
204
  {
203
205
  states: (code, opts) => request(`/country/${enc(code)}/states`, void 0, void 0, opts)
204
206
  }
205
207
  ),
206
208
  state: Object.assign(
207
- (code, opts) => request(`/state/${enc(code)}`, { country: opts?.country }, void 0, opts),
209
+ (code, opts) => request(`/state/${enc(code)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
208
210
  {
209
- districts: (code, opts) => request(`/state/${enc(code)}/districts`, { country: opts?.country }, void 0, opts)
211
+ districts: (code, opts) => request(`/state/${enc(code)}/districts`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts)
210
212
  }
211
213
  ),
212
- district: (code, opts) => request(`/district/${enc(code)}`, { country: opts?.country, state: opts?.state }, void 0, opts),
214
+ district: (code, opts) => request(`/district/${enc(code)}`, { country: opts?.country, state: opts?.state, ...deepQuery(opts) }, void 0, opts),
213
215
  city: Object.assign(
214
- (name, opts) => request(`/city/${enc(name)}`, { country: opts?.country, state: opts?.state }, void 0, opts),
216
+ (name, opts) => request(`/city/${enc(name)}`, { country: opts?.country, state: opts?.state, ...deepQuery(opts) }, void 0, opts),
215
217
  {
216
- id: (id, opts) => request(`/city/id/${enc(id)}`, void 0, void 0, opts),
217
- search: (query, opts) => request("/city", { q: query, country: opts?.country, state: opts?.state, limit: opts?.limit }, void 0, opts),
218
- nearest: (lat, lon, opts) => request("/city", { lat, lon }, void 0, opts),
218
+ id: (id, opts) => request(`/city/id/${enc(id)}`, deepQuery(opts), void 0, opts),
219
+ search: (query, opts) => request("/city", { q: query, country: opts?.country, state: opts?.state, limit: opts?.limit, ...deepQuery(opts) }, void 0, opts),
220
+ nearest: (lat, lon, opts) => request("/city", { lat, lon, ...deepQuery(opts) }, void 0, opts),
219
221
  nearby: (name, opts) => request(`/city/${enc(name)}/nearby`, {
220
222
  radius: opts?.radius,
221
223
  unit: opts?.unit,
222
224
  country: opts?.country,
223
225
  state: opts?.state,
224
- limit: opts?.limit
226
+ limit: opts?.limit,
227
+ ...deepQuery(opts)
225
228
  }, void 0, opts)
226
229
  }
227
230
  ),
231
+ /** Look up a postal area. Pass country when known. Check nullable latitude/longitude before another location lookup. */
228
232
  postal: Object.assign(
229
- (code, opts) => request(`/postal/${enc(code)}`, { country: opts?.country }, void 0, opts),
233
+ (code, opts) => request(`/postal/${enc(code)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
230
234
  {
231
235
  nearby: (code, opts) => request(`/postal/${enc(code)}/nearby`, {
232
236
  country: opts?.country,
233
237
  radius: opts?.radius,
234
- unit: opts?.unit
238
+ unit: opts?.unit,
239
+ ...deepQuery(opts)
235
240
  }, void 0, opts),
236
- distance: (from, to, opts) => request(`/postal/${enc(from)}/distance/${enc(to)}`, { country: opts?.country }, void 0, opts)
241
+ distance: (from, to, opts) => request(`/postal/${enc(from)}/distance/${enc(to)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts)
237
242
  }
238
243
  ),
239
244
  address: Object.assign(
240
245
  (address, opts) => request(`/address/${enc(address)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
241
246
  {
247
+ /** Find address suggestions using the context supplied. Prefer postal, or city and state, from the form. ip is an optional end-user locality hint for server-side calls. An empty result has reason more_input, missing_context or no_matches. Suggestions have reason null. Operational failures are errors. */
242
248
  search: (query, opts) => request("/address", { q: query, country: opts?.country, postal: opts?.postal, city: opts?.city, state: opts?.state, ip: opts?.ip }, void 0, opts)
243
249
  }
244
250
  ),
245
251
  company: (number, opts) => request(`/company/${enc(number)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
252
+ /**
253
+ * Parse an email and check its format and domain.
254
+ * `deep: true` explicitly requests a metered deliverability check using included checks or enabled on-demand usage.
255
+ * Deep checks default to one attempt. An explicit retry count can repeat paid usage.
256
+ */
246
257
  email: (email, opts) => request(`/email/${enc(email)}`, deepQuery(opts), void 0, opts),
258
+ /** Check VAT format and checksum. `deep: true` requests a metered registry check where supported, with no automatic retries by default. */
247
259
  vat: (number, opts) => request(`/vat/${enc(number)}`, {
248
260
  country: opts?.country,
249
261
  from: opts?.from,
250
262
  ...deepQuery(opts)
251
263
  }, void 0, opts),
252
- iban: (iban, opts) => request(`/iban/${enc(iban)}`, { country: opts?.country }, void 0, opts),
264
+ iban: (iban, opts) => request(`/iban/${enc(iban)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
253
265
  npi: (npi, opts) => request(`/npi/${enc(npi)}`, deepQuery(opts), void 0, opts),
266
+ /** Parse a phone number and its formats. Pass country for national numbers when needed. Deep adds numbering-plan geography. */
254
267
  phone: (number, opts) => request(`/phone/${enc(number)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
255
- carrier: (number, opts) => request(`/carrier/${enc(number)}`, { country: opts?.country }, void 0, opts),
268
+ /** Request a metered carrier lookup. No automatic retries by default. */
269
+ carrier: (number, opts) => request(`/carrier/${enc(number)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
270
+ /** Request a metered caller-name lookup for a NANP number. No automatic retries by default. */
256
271
  caller: (number, opts) => request(`/caller/${enc(number)}`, { country: opts?.country }, void 0, opts),
257
- hlr: (number, opts) => request(`/hlr/${enc(number)}`, { country: opts?.country }, void 0, opts),
272
+ /** Look up phone status at the last check. Live means assigned and connected means reachable at that check. Cached results may be returned. Null means unconfirmed. Deep adds network diagnostics within the same metered lookup. No automatic retries by default. */
273
+ hlr: (number, opts) => request(`/hlr/${enc(number)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
274
+ /** Check whether a domain is registered. Deep adds registration dates, registrar, status and DNSSEC on paid plans. */
258
275
  domain: (domain, opts) => request(`/domain/${enc(domain)}`, deepQuery(opts), void 0, opts),
259
276
  asn: (asn, opts) => request(`/asn/${enc(asn)}`, void 0, void 0, opts),
260
277
  mac: (mac, opts) => request(`/mac/${enc(mac)}`, void 0, void 0, opts),
278
+ /** Look up a 6-11 digit card prefix. Keep leading zeros in the input string. */
279
+ bin: (bin, opts) => request(`/bin/${enc(bin)}`, { deep: opts?.deep }, void 0, opts),
280
+ /** Parse a measurement or convert it to `to`. Without `to`, use its type's canonical unit. Invalid input is plain data with `valid: false`. */
281
+ measure: Object.assign(
282
+ (measure, opts) => request(`/measure/${enc(measure)}`, { to: opts?.to, locale: opts?.locale, system: opts?.system }, void 0, opts),
283
+ {
284
+ /** Discover reviewed units. Pass `unit` to find compatible conversion targets. */
285
+ units: (opts) => request("/measure/units", { q: opts?.query, type: opts?.type, unit: opts?.unit }, void 0, opts)
286
+ }
287
+ ),
288
+ /** Look up DNS records with TTLs. Type selects the question and may include its CNAME chain. Pooled on every plan. */
289
+ dns: (domain, opts) => request(`/dns/${enc(domain)}`, { type: opts?.type }, void 0, opts),
261
290
  mx: (domain, opts) => request(`/mx/${enc(domain)}`, void 0, void 0, opts),
262
291
  useragent: (ua, opts) => request("/useragent", deepQuery(opts), { "User-Agent": ua }, opts),
263
292
  vin: (vin, opts) => request(`/vin/${enc(vin)}`, deepQuery(opts), void 0, opts),
293
+ /** US NAICS 2022 definitions and hierarchy. */
294
+ naics: Object.assign(
295
+ (code, opts) => request(`/naics/${enc(code)}`, deepQuery(opts), void 0, opts),
296
+ {
297
+ search: (query, opts) => request("/naics", { q: query, limit: opts?.limit, ...deepQuery(opts) }, void 0, opts)
298
+ }
299
+ ),
300
+ /** Look up the general US duty schedule line. Paid deep adds units and the special and other schedule columns. Add origin with deep to resolve country-specific measures. Without origin, schedule detail remains available and origin-dependent fields are null. A null effective rate is not a zero rate. */
264
301
  tariff: Object.assign(
265
302
  (code, opts) => request(`/tariff/${enc(code)}`, { origin: opts?.origin, ...deepQuery(opts) }, void 0, opts),
266
303
  {
@@ -268,7 +305,7 @@ function parseAPI(apiKey, options = {}) {
268
305
  }
269
306
  ),
270
307
  currency: Object.assign(
271
- (code, opts) => request(`/currency/${enc(code)}`, void 0, void 0, opts),
308
+ (code, opts) => request(`/currency/${enc(code)}`, deepQuery(opts), void 0, opts),
272
309
  {
273
310
  rate: (base, quote, opts) => request(`/currency/${enc(base)}/${enc(quote)}`, {
274
311
  date: opts?.date,
@@ -276,18 +313,25 @@ function parseAPI(apiKey, options = {}) {
276
313
  }, void 0, opts)
277
314
  }
278
315
  ),
279
- language: (code, opts) => request(`/language/${enc(code)}`, void 0, void 0, opts),
280
- name: (name, opts) => request(`/name/${enc(name)}`, void 0, void 0, opts),
316
+ language: (code, opts) => request(`/language/${enc(code)}`, deepQuery(opts), void 0, opts),
317
+ name: (name, opts) => request(`/name/${enc(name)}`, { country: opts?.country, ...deepQuery(opts) }, void 0, opts),
318
+ /** Current local time, UTC by default. With to, offsetless at is source wall time. */
319
+ time: Object.assign(
320
+ (timezone, opts) => request(timezone === void 0 ? "/time" : `/time/${enc(timezone)}`, { at: opts?.at, to: opts?.to, ...deepQuery(opts) }, void 0, opts),
321
+ {
322
+ at: (lat, lon, opts) => request("/time", { lat, lon, at: opts?.at, to: opts?.to, ...deepQuery(opts) }, void 0, opts)
323
+ }
324
+ ),
281
325
  timezone: Object.assign(
282
- (id, opts) => request(`/timezone/${enc(id)}`, { at: opts?.at, to: opts?.to }, void 0, opts),
326
+ (id, opts) => request(`/timezone/${enc(id)}`, { at: opts?.at, to: opts?.to, ...deepQuery(opts) }, void 0, opts),
283
327
  {
284
- at: (lat, lon, opts) => request("/timezone", { lat, lon, at: opts?.at }, void 0, opts)
328
+ at: (lat, lon, opts) => request("/timezone", { lat, lon, at: opts?.at, ...deepQuery(opts) }, void 0, opts)
285
329
  }
286
330
  ),
287
331
  date: Object.assign(
288
- (date, opts) => request(`/date/${enc(date)}`, { format: opts?.format, to: opts?.to }, void 0, opts),
332
+ (date, opts) => request(`/date/${enc(date)}`, { format: opts?.format, to: opts?.to, ...deepQuery(opts) }, void 0, opts),
289
333
  {
290
- today: (opts) => request("/date", { to: opts?.to }, void 0, opts)
334
+ today: (opts) => request("/date", { to: opts?.to, ...deepQuery(opts) }, void 0, opts)
291
335
  }
292
336
  ),
293
337
  holiday: Object.assign(
@@ -297,12 +341,14 @@ function parseAPI(apiKey, options = {}) {
297
341
  }
298
342
  ),
299
343
  elevation: (lat, lon, opts) => request("/elevation", { lat, lon }, void 0, opts),
344
+ /** Resolve the country, state, district and timezone at coordinates. Deep adds terrain and compact nearest-city context on every plan. The timezone ID stays in core. The nearest city is null when none is within 200 km. */
300
345
  point: (lat, lon, opts) => request("/point", { lat, lon, ...deepQuery(opts) }, void 0, opts),
346
+ /** Get current conditions in metric and imperial units. Paid deep adds specialist current measurements, forecasts and related detail. With deep, date selects a past UTC day (YYYY-MM-DD) in deep.history alongside current conditions. Date alone does not request history. */
301
347
  weather: (lat, lon, opts) => request("/weather", { lat, lon, date: opts?.date, ...deepQuery(opts) }, void 0, opts),
302
348
  emoji: Object.assign(
303
- (emoji, opts) => request(`/emoji/${enc(emoji)}`, void 0, void 0, opts),
349
+ (emoji, opts) => request(`/emoji/${enc(emoji)}`, deepQuery(opts), void 0, opts),
304
350
  {
305
- search: (query, opts) => request("/emoji", { q: query, limit: opts?.limit }, void 0, opts)
351
+ search: (query, opts) => request("/emoji", { q: query, limit: opts?.limit, ...deepQuery(opts) }, void 0, opts)
306
352
  }
307
353
  )
308
354
  };
@@ -312,3 +358,4 @@ function parseAPI(apiKey, options = {}) {
312
358
  ParseAPIError,
313
359
  parseAPI
314
360
  });
361
+ /*! You found Dev. https://parseapi.com/dev */