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.
- package/README.md +71 -1
- package/dist/index.cjs +1528 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1890 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +1889 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1474 -18
- package/dist/index.js.map +1 -0
- package/package.json +24 -18
- package/dist/aggregation.builder.d.ts +0 -6
- package/dist/aggregation.builder.d.ts.map +0 -1
- package/dist/aggregation.builder.js +0 -81
- package/dist/aggregation.types.d.ts +0 -258
- package/dist/aggregation.types.d.ts.map +0 -1
- package/dist/aggregation.types.js +0 -6
- package/dist/bulk.builder.d.ts +0 -29
- package/dist/bulk.builder.d.ts.map +0 -1
- package/dist/bulk.builder.js +0 -51
- package/dist/bulk.types.d.ts +0 -47
- package/dist/bulk.types.d.ts.map +0 -1
- package/dist/bulk.types.js +0 -6
- package/dist/field.helpers.d.ts +0 -241
- package/dist/field.helpers.d.ts.map +0 -1
- package/dist/field.helpers.js +0 -333
- package/dist/field.types.d.ts +0 -348
- package/dist/field.types.d.ts.map +0 -1
- package/dist/field.types.js +0 -6
- package/dist/index-management.builder.d.ts +0 -38
- package/dist/index-management.builder.d.ts.map +0 -1
- package/dist/index-management.builder.js +0 -69
- package/dist/index-management.types.d.ts +0 -136
- package/dist/index-management.types.d.ts.map +0 -1
- package/dist/index-management.types.js +0 -6
- package/dist/mapping.builder.d.ts +0 -53
- package/dist/mapping.builder.d.ts.map +0 -1
- package/dist/mapping.builder.js +0 -39
- package/dist/mapping.types.d.ts +0 -200
- package/dist/mapping.types.d.ts.map +0 -1
- package/dist/mapping.types.js +0 -6
- package/dist/multi-search.builder.d.ts +0 -23
- package/dist/multi-search.builder.d.ts.map +0 -1
- package/dist/multi-search.builder.js +0 -48
- package/dist/multi-search.types.d.ts +0 -50
- package/dist/multi-search.types.d.ts.map +0 -1
- package/dist/multi-search.types.js +0 -6
- package/dist/query.builder.d.ts +0 -4
- package/dist/query.builder.d.ts.map +0 -1
- package/dist/query.builder.js +0 -329
- package/dist/query.types.d.ts +0 -468
- package/dist/query.types.d.ts.map +0 -1
- package/dist/query.types.js +0 -7
- package/dist/settings.presets.d.ts +0 -117
- package/dist/settings.presets.d.ts.map +0 -1
- package/dist/settings.presets.js +0 -137
- package/dist/suggester.builder.d.ts +0 -23
- package/dist/suggester.builder.d.ts.map +0 -1
- package/dist/suggester.builder.js +0 -51
- package/dist/suggester.types.d.ts +0 -90
- package/dist/suggester.types.d.ts.map +0 -1
- package/dist/suggester.types.js +0 -6
- package/dist/vector.types.d.ts +0 -17
- package/dist/vector.types.d.ts.map +0 -1
- 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.
|
|
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
|
|