elasticlink 1.0.0-beta.1 → 1.0.0-beta.2

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 (64) hide show
  1. package/README.md +71 -1
  2. package/dist/index.cjs +1528 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +1890 -0
  5. package/dist/index.d.cts.map +1 -0
  6. package/dist/index.d.ts +1889 -20
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1474 -18
  9. package/dist/index.js.map +1 -0
  10. package/package.json +24 -18
  11. package/dist/aggregation.builder.d.ts +0 -6
  12. package/dist/aggregation.builder.d.ts.map +0 -1
  13. package/dist/aggregation.builder.js +0 -81
  14. package/dist/aggregation.types.d.ts +0 -258
  15. package/dist/aggregation.types.d.ts.map +0 -1
  16. package/dist/aggregation.types.js +0 -6
  17. package/dist/bulk.builder.d.ts +0 -29
  18. package/dist/bulk.builder.d.ts.map +0 -1
  19. package/dist/bulk.builder.js +0 -51
  20. package/dist/bulk.types.d.ts +0 -47
  21. package/dist/bulk.types.d.ts.map +0 -1
  22. package/dist/bulk.types.js +0 -6
  23. package/dist/field.helpers.d.ts +0 -241
  24. package/dist/field.helpers.d.ts.map +0 -1
  25. package/dist/field.helpers.js +0 -333
  26. package/dist/field.types.d.ts +0 -348
  27. package/dist/field.types.d.ts.map +0 -1
  28. package/dist/field.types.js +0 -6
  29. package/dist/index-management.builder.d.ts +0 -38
  30. package/dist/index-management.builder.d.ts.map +0 -1
  31. package/dist/index-management.builder.js +0 -69
  32. package/dist/index-management.types.d.ts +0 -136
  33. package/dist/index-management.types.d.ts.map +0 -1
  34. package/dist/index-management.types.js +0 -6
  35. package/dist/mapping.builder.d.ts +0 -53
  36. package/dist/mapping.builder.d.ts.map +0 -1
  37. package/dist/mapping.builder.js +0 -39
  38. package/dist/mapping.types.d.ts +0 -200
  39. package/dist/mapping.types.d.ts.map +0 -1
  40. package/dist/mapping.types.js +0 -6
  41. package/dist/multi-search.builder.d.ts +0 -23
  42. package/dist/multi-search.builder.d.ts.map +0 -1
  43. package/dist/multi-search.builder.js +0 -48
  44. package/dist/multi-search.types.d.ts +0 -50
  45. package/dist/multi-search.types.d.ts.map +0 -1
  46. package/dist/multi-search.types.js +0 -6
  47. package/dist/query.builder.d.ts +0 -4
  48. package/dist/query.builder.d.ts.map +0 -1
  49. package/dist/query.builder.js +0 -329
  50. package/dist/query.types.d.ts +0 -468
  51. package/dist/query.types.d.ts.map +0 -1
  52. package/dist/query.types.js +0 -7
  53. package/dist/settings.presets.d.ts +0 -117
  54. package/dist/settings.presets.d.ts.map +0 -1
  55. package/dist/settings.presets.js +0 -137
  56. package/dist/suggester.builder.d.ts +0 -23
  57. package/dist/suggester.builder.d.ts.map +0 -1
  58. package/dist/suggester.builder.js +0 -51
  59. package/dist/suggester.types.d.ts +0 -90
  60. package/dist/suggester.types.d.ts.map +0 -1
  61. package/dist/suggester.types.js +0 -6
  62. package/dist/vector.types.d.ts +0 -17
  63. package/dist/vector.types.d.ts.map +0 -1
  64. package/dist/vector.types.js +0 -6
package/README.md CHANGED
@@ -304,6 +304,76 @@ const q2 = queryBuilder(userMappings).match('email', 'john@example.com').build()
304
304
  const q3 = queryBuilder(userMappings).term('email', 'john@example.com').build();
305
305
  ```
306
306
 
307
+ ## Vanilla JavaScript
308
+
309
+ elasticlink works in vanilla JavaScript with full IntelliSense — no TypeScript required. The library ships both ESM and CommonJS builds, so `import` and `require()` both work.
310
+
311
+ ### Setup
312
+
313
+ For project-wide type checking, add a `jsconfig.json` to your project root:
314
+
315
+ ```json
316
+ {
317
+ "compilerOptions": {
318
+ "checkJs": true,
319
+ "strict": true,
320
+ "module": "commonjs",
321
+ "moduleResolution": "node10",
322
+ "target": "ES2022"
323
+ }
324
+ }
325
+ ```
326
+
327
+ Or enable per-file with `// @ts-check` at the top of any `.js` file.
328
+
329
+ ### Usage
330
+
331
+ Query builder methods provide field-name autocomplete and type constraints in VS Code even without any configuration:
332
+
333
+ ```js
334
+ const { mappings, text, keyword, float, queryBuilder } = require('elasticlink');
335
+
336
+ const productSchema = mappings({
337
+ name: text(),
338
+ price: float(),
339
+ category: keyword()
340
+ });
341
+
342
+ // Field names autocomplete, and are constrained by type:
343
+ const query = queryBuilder(productSchema)
344
+ .match('name', 'laptop') // 'name' is text — allowed in match()
345
+ .range('price', { gte: 500 }) // 'price' is numeric — allowed in range()
346
+ .term('category', 'electronics') // 'category' is keyword — allowed in term()
347
+ .build();
348
+ ```
349
+
350
+ ### Deriving Document Types
351
+
352
+ In TypeScript you'd use `type Product = Infer<typeof schema>`. In JavaScript, use the `inferType()` helper:
353
+
354
+ > ⚠️ **Type-only helper.** `inferType()` always returns `undefined`. It exists so you can write `typeof _Product` in a JSDoc `@type` annotation. Never use the returned value at runtime — accessing a property on it (e.g. `_Product.name`) will throw `TypeError`.
355
+
356
+ ```js
357
+ const { mappings, text, keyword, float, inferType } = require('elasticlink');
358
+
359
+ const schema = mappings({ name: text(), price: float(), category: keyword() });
360
+
361
+ const _Product = inferType(schema); // undefined at runtime; only the type matters
362
+
363
+ /** @type {typeof _Product} */
364
+ const doc = { name: 'Laptop', price: 999, category: 'electronics' };
365
+ // ^ full autocomplete on all properties
366
+ ```
367
+
368
+ Alternatively, use the JSDoc import syntax directly:
369
+
370
+ ```js
371
+ /** @type {import('elasticlink').Infer<typeof schema>} */
372
+ const doc = { name: 'Laptop', price: 999, category: 'electronics' };
373
+ ```
374
+
375
+ See [`examples/vanilla-js/`](examples/vanilla-js/) for a complete working example.
376
+
307
377
  ## Settings Presets
308
378
 
309
379
  Ready-made index settings for common lifecycle stages. Use with `.settings()` on `indexBuilder()` or pass directly to the ES `_settings` API.
@@ -903,7 +973,7 @@ const alerts = queryBuilder(alertRuleMappings)
903
973
 
904
974
  | elasticlink | Node.js | Elasticsearch |
905
975
  | ------------ | ---------- | ------------- |
906
- | 1.0.0-beta.1 | 20, 22, 24 | 9.x (≥9.0.0) |
976
+ | 1.0.0-beta.2 | 20, 22, 24 | 9.x (≥9.0.0) |
907
977
 
908
978
  Tested against the versions listed. Peer dependency is `@elastic/elasticsearch >=9.0.0`.
909
979