datastore-api 1.1.2 → 1.5.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.
@@ -5,45 +5,46 @@
5
5
  * Copyright (c) 2021 Dr. Maximilian Dornseif
6
6
  */
7
7
  import { Datastore } from '@google-cloud/datastore';
8
- // import { assertIsObject, isNumber } from 'assertate';
9
8
  import test from 'ava';
9
+ import Emulator from 'google-datastore-emulator';
10
10
  import { Dstore } from './dstore-api';
11
+ process.env.GCLOUD_PROJECT = 'project-id'; // Set the datastore project Id globally
12
+ let emulator;
13
+ test.before(async (_t) => {
14
+ emulator = new Emulator({ debug: false });
15
+ await emulator.start();
16
+ });
17
+ test.after('cleanup', async (_t) => {
18
+ await emulator.stop();
19
+ });
11
20
  function getDstore(projectId) {
12
21
  return new Dstore(new Datastore({ projectId }));
13
22
  }
14
23
  test('keySerialize', async (t) => {
15
- const kvStore = getDstore('huwawi3Datastore');
24
+ const kvStore = getDstore('test');
16
25
  t.deepEqual(kvStore.key(['testYodel', 123]).path, ['testYodel', 123]);
17
- // t.deepEqual(kvStore.key(['testYodel', 123]).serialized, {
18
- // namespace: undefined,
19
- // path: ['testYodel'],
20
- // } as any);
21
- t.deepEqual(kvStore.key(['testYodel', 123]), {
26
+ t.deepEqual(JSON.parse(JSON.stringify(kvStore.key(['testYodel', 123]))), {
22
27
  id: 123,
23
28
  kind: 'testYodel',
24
- namespace: undefined,
25
29
  path: ['testYodel', 123],
26
30
  });
27
31
  const ser = kvStore.keySerialize(kvStore.key(['testYodel', 123]));
28
- t.deepEqual(ser, 'agdodXdhd2kzcg8LEgl0ZXN0WW9kZWwYewyiAQR0ZXN0');
29
- t.deepEqual(kvStore.keyFromSerialized(ser), {
32
+ t.deepEqual(ser, 'agByDwsSCXRlc3RZb2RlbBh7DA');
33
+ t.deepEqual(JSON.parse(JSON.stringify(kvStore.keyFromSerialized(ser))), {
30
34
  id: '123',
31
35
  kind: 'testYodel',
32
- namespace: 'undefined',
33
36
  path: ['testYodel', '123'],
34
37
  });
35
38
  });
36
- // it("allocation", async () => {
37
- // expect.assertions(1);
38
- // const kvStore = getDstore("huwawi3Datastore");
39
- // const id = await kvStore.allocateOneId();
40
- // expect(id).toMatch(/\d+/);
41
- // });
42
- // });
39
+ test('allocation', async (t) => {
40
+ const kvStore = getDstore('test');
41
+ const id = await kvStore.allocateOneId();
42
+ t.regex(id, /\d+/);
43
+ });
43
44
  // describe("Read", () => {
44
45
  // it("get num_id", async () => {
45
46
  // expect.assertions(10);
46
- // const kvStore = getDstore("huwawi3Datastore");
47
+ // const kvStore = getDstore("test");
47
48
  // const entity = { key: kvStore.key(["testYodel", 2]), data: { foo: "bar" } };
48
49
  // const entity2 = { key: kvStore.key(["testYodel", 3]), data: { foo: "bar" } };
49
50
  // const commitResponse = await kvStore.save([entity, entity2]);
@@ -211,183 +212,73 @@ test('keySerialize', async (t) => {
211
212
  // // expect(Array.isArray(result)).toBeTruthy();
212
213
  // expect(result6).toMatchInlineSnapshot(`Array []`);
213
214
  // });
214
- // it("get name", async () => {
215
- // expect.assertions(3);
216
- // const kvStore = getDstore("huwawi3Datastore");
217
- // const entity = { key: kvStore.key(["testYodel", "two"]), data: { foo: "bar" } };
218
- // const commitResponse = await kvStore.save([entity]);
219
- // expect(commitResponse?.[0]?.indexUpdates).toBe(3);
220
- // // expect(commitResponse).toMatchInlineSnapshot(`
221
- // // Array [
222
- // // Object {
223
- // // "indexUpdates": 0,
224
- // // "mutationResults": Array [
225
- // // Object {
226
- // // "conflictDetected": false,
227
- // // "key": null,
228
- // // "version": "1234567890123456",
229
- // // },
230
- // // ],
231
- // // },
232
- // // ]
233
- // // `);
234
- // expect(entity).toMatchInlineSnapshot(`
235
- // Object {
236
- // "data": Object {
237
- // "foo": "bar",
238
- // },
239
- // "key": Key {
240
- // "kind": "testYodel",
241
- // "name": "two",
242
- // "namespace": "test",
243
- // "path": Array [
244
- // "testYodel",
245
- // "two",
246
- // ],
247
- // },
248
- // }
249
- // `);
250
- // const result = await kvStore.get(entity.key);
251
- // expect(result).toMatchInlineSnapshot(`
252
- // Object {
253
- // "_keyStr": "agdodXdhd2kzchMLEgl0ZXN0WW9kZWwiBHp3ZWkMogEEdGVzdA",
254
- // "foo": "bar",
255
- // Symbol(KEY): Key {
256
- // "kind": "testYodel",
257
- // "name": "two",
258
- // "namespace": "test",
259
- // "path": Array [
260
- // "testYodel",
261
- // "two",
262
- // ],
263
- // },
264
- // }
265
- // `);
266
- // });
267
- // it("query", async () => {
268
- // expect.assertions(5);
269
- // const kvStore = getDstore("huwawi3Datastore");
270
- // const entity = { key: kvStore.key(["testYodel", 3]), data: { foo: "bar" } };
271
- // const data = await kvStore.save([entity]);
272
- // const query = kvStore.createQuery("testYodel");
273
- // query.limit(1);
274
- // const [entities, runQueryInfo] = await kvStore.runQuery(query);
275
- // expect(entities.length).toBe(1);
276
- // expect(entities?.[0]?.foo).toMatchInlineSnapshot(`"bar"`);
277
- // expect(entities?.[0]?.[Datastore.KEY]?.kind).toMatchInlineSnapshot(`"testYodel"`);
278
- // // expect(entities).toMatchInlineSnapshot(`
279
- // // Array [
280
- // // Object {
281
- // // "foo": "bar",
282
- // // Symbol(KEY): Key {
283
- // // "id": "3",
284
- // // "kind": "testYodel",
285
- // // "namespace": "test",
286
- // // "path": Array [
287
- // // "testYodel",
288
- // // "3",
289
- // // ],
290
- // // },
291
- // // },
292
- // // ]
293
- // // `);
294
- // expect(runQueryInfo).toMatchInlineSnapshot(
295
- // { endCursor: expect.any(String) },
296
- // `
297
- // Object {
298
- // "endCursor": Any<String>,
299
- // "moreResults": "MORE_RESULTS_AFTER_LIMIT",
300
- // }
301
- // `
302
- // );
303
- // const result2 = await kvStore.query("testYodel", [], 1);
304
- // expect(result2[0]).toMatchInlineSnapshot(`
305
- // Array [
306
- // Object {
307
- // "foo": "bar",
308
- // Symbol(KEY): Key {
309
- // "id": "2",
310
- // "kind": "testYodel",
311
- // "namespace": "test",
312
- // "path": Array [
313
- // "testYodel",
314
- // "2",
315
- // ],
316
- // },
317
- // },
318
- // ]
319
- // `);
320
- // });
321
- // });
322
- // describe("Writing", () => {
323
- // it("save / upsert", async () => {
324
- // expect.assertions(2);
325
- // const kvStore = getDstore("huwawi3Datastore");
326
- // const entity = { key: kvStore.key(["testYodel", 3]), data: { foo: "bar" } };
327
- // const result = await kvStore.save([entity]);
328
- // // const result2 = await kvStore.upsert([entity]);
329
- // expect(result?.[0]?.mutationResults?.[0]?.conflictDetected).toMatchInlineSnapshot(`false`);
330
- // // expect(result).toMatchInlineSnapshot(`
331
- // // Array [
332
- // // Object {
333
- // // "indexUpdates": 3
334
- // // "mutationResults": Array [
335
- // // Object {
336
- // // "conflictDetected": false,
337
- // // "key": null,
338
- // // "version": "1234567890123456",
339
- // // },
340
- // // ],
341
- // // },
342
- // // ]
343
- // // `);
344
- // expect(entity.data[Datastore.KEY]).toMatchInlineSnapshot(`undefined`);
345
- // });
346
- // it("update", async () => {
347
- // expect.assertions(3);
348
- // const kvStore = getDstore("huwawi3Datastore");
349
- // const keyName = `4insert${Math.random()}`;
350
- // const entity = { key: kvStore.key(["testYodel", keyName]), data: { foo: "bar" } };
351
- // // const request = kvStore.update([entity]);
352
- // // await expect(request).rejects.toThrowError(Error);
353
- // const commitResponse = await kvStore.save([entity]);
354
- // // @ts-expect-error
355
- // commitResponse[0].mutationResults[0].version = 2;
356
- // expect(commitResponse?.[0]).toMatchInlineSnapshot(
357
- // { indexUpdates: expect.any(Number) },
358
- // `
359
- // Object {
360
- // "indexUpdates": Any<Number>,
361
- // "mutationResults": Array [
362
- // Object {
363
- // "conflictDetected": false,
364
- // "key": null,
365
- // "version": 2,
366
- // },
367
- // ],
368
- // }
369
- // `
370
- // );
371
- // const commitResponse2 = await kvStore.update([entity]);
372
- // if (commitResponse2?.[0]?.mutationResults?.[0]?.version) {
373
- // commitResponse2[0].mutationResults[0].version = 2;
374
- // }
375
- // expect(commitResponse2).toMatchInlineSnapshot(`
376
- // Array [
377
- // Object {
378
- // "indexUpdates": 0,
379
- // "mutationResults": Array [
380
- // Object {
381
- // "conflictDetected": false,
382
- // "key": null,
383
- // "version": 2,
384
- // },
385
- // ],
386
- // },
387
- // ]
388
- // `);
389
- // expect(entity.data[Datastore.KEY]).toMatchInlineSnapshot(`undefined`);
390
- // });
215
+ test('get name', async (t) => {
216
+ const kvStore = getDstore('test');
217
+ const entity = {
218
+ key: kvStore.key(['testYodel', 'two']),
219
+ data: { foo: 'bar' },
220
+ };
221
+ await kvStore.save([entity]);
222
+ const result = await kvStore.get(entity.key);
223
+ t.is(result?._keyStr, 'agByEgsSCXRlc3RZb2RlbCIDdHdvDA');
224
+ t.is(result?.foo, 'bar');
225
+ });
226
+ test('query', async (t) => {
227
+ const kvStore = getDstore('test');
228
+ const entity = {
229
+ key: kvStore.key(['testYodel', '3']),
230
+ data: { foo: 'bar', baz: 'baz' },
231
+ };
232
+ await kvStore.save([entity]);
233
+ const query = kvStore.createQuery('testYodel');
234
+ query.limit(1);
235
+ const [entities, runQueryInfo] = await kvStore.runQuery(query);
236
+ t.is(entities.length, 1);
237
+ t.is(entities?.[0]?.foo, 'bar');
238
+ t.is(entities?.[0]?.[Datastore.KEY]?.kind, 'testYodel');
239
+ t.is(runQueryInfo?.moreResults, 'MORE_RESULTS_AFTER_LIMIT');
240
+ t.is(entities?.[0]?._keyStr, 'agByDwsSCXRlc3RZb2RlbBgDDA');
241
+ // modern interface
242
+ const [result2] = await kvStore.query('testYodel', [], 1, [], ['baz']);
243
+ t.is(result2.length, 1);
244
+ // foo is removed by selection
245
+ t.deepEqual(JSON.parse(JSON.stringify(result2?.[0])), {
246
+ _keyStr: 'agByEAsSCXRlc3RZb2RlbCIBMww',
247
+ baz: 'baz',
248
+ });
249
+ const key = kvStore.readKey(result2?.[0]);
250
+ t.is(key.id, entity.key.id);
251
+ });
252
+ test('save / upsert', async (t) => {
253
+ // expect.assertions(2);
254
+ const kvStore = getDstore('test');
255
+ const entity = {
256
+ key: kvStore.key(['testYodel', 3]),
257
+ data: { foo: 'bar' },
258
+ };
259
+ const result = await kvStore.save([entity]);
260
+ // const result2 = await kvStore.upsert([entity]);
261
+ t.is(result?.[0]?.mutationResults?.[0]?.conflictDetected, false);
262
+ t.deepEqual(entity.data._keyStr, 'agByDwsSCXRlc3RZb2RlbBgDDA');
263
+ t.deepEqual(entity.data.foo, 'bar');
264
+ t.deepEqual(entity.data[Datastore.KEY].kind, 'testYodel');
265
+ });
266
+ test('update', async (t) => {
267
+ // expect.assertions(3);
268
+ const kvStore = getDstore('test');
269
+ const keyName = `4insert${Math.random()}`;
270
+ const entity = {
271
+ key: kvStore.key(['testYodel', keyName]),
272
+ data: { foo: 'bar' },
273
+ };
274
+ // const request = kvStore.update([entity]);
275
+ // await expect(request).rejects.toThrowError(Error);
276
+ await kvStore.save([entity]);
277
+ const result = await kvStore.update([entity]);
278
+ t.is(result?.[0]?.mutationResults?.[0]?.conflictDetected, false);
279
+ t.is(result?.[0]?.mutationResults?.[0]?.key, null);
280
+ t.is(result?.[0]?.indexUpdates, 2);
281
+ });
391
282
  // it("insert", async () => {
392
283
  // expect.assertions(4);
393
284
  // const kvStore = getDstore("huwawi3Datastore");
@@ -465,12 +356,12 @@ test('keySerialize', async (t) => {
465
356
  // await expect(request).rejects.toThrowError(DstoreError);
466
357
  // });
467
358
  // });
468
- // describe("Exceptions", () => {
469
- // it("simple", async () => {
359
+ // describe('Exceptions', () => {
360
+ // it('simple', async () => {
470
361
  // const t = () => {
471
- // throw new DstoreError("bla", undefined);
362
+ // throw new DstoreError('bla', undefined);
472
363
  // };
473
364
  // expect(t).toThrow(DstoreError);
474
365
  // });
475
366
  // });
476
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHN0b3JlLWFwaS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kc3RvcmUtYXBpLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsd0RBQXdEO0FBQ3hELE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRDLFNBQVMsU0FBUyxDQUFDLFNBQVM7SUFDMUIsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0IsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsNERBQTREO0lBQzVELDBCQUEwQjtJQUMxQix5QkFBeUI7SUFDekIsYUFBYTtJQUNiLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsRUFBRSxHQUFVO1FBQ2QsSUFBSSxFQUFFLFdBQVc7UUFDakIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztLQUNsQixDQUFDLENBQUM7SUFDVixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLDhDQUE4QyxDQUFDLENBQUM7SUFDakUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDMUMsRUFBRSxFQUFFLEtBQUs7UUFDVCxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsV0FBVztRQUN0QixJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0tBQ3BCLENBQUMsQ0FBQztBQUNaLENBQUMsQ0FBQyxDQUFDO0FBRUgsbUNBQW1DO0FBQ25DLDRCQUE0QjtBQUM1QixxREFBcUQ7QUFDckQsZ0RBQWdEO0FBQ2hELGlDQUFpQztBQUNqQyxRQUFRO0FBQ1IsTUFBTTtBQUVOLDJCQUEyQjtBQUMzQixtQ0FBbUM7QUFDbkMsNkJBQTZCO0FBQzdCLHFEQUFxRDtBQUNyRCxtRkFBbUY7QUFDbkYsb0ZBQW9GO0FBQ3BGLG9FQUFvRTtBQUNwRSx3RUFBd0U7QUFDeEUsd0RBQXdEO0FBQ3hELG1CQUFtQjtBQUNuQixzQkFBc0I7QUFDdEIsa0NBQWtDO0FBQ2xDLDBDQUEwQztBQUMxQywwQkFBMEI7QUFDMUIsOENBQThDO0FBQzlDLGdDQUFnQztBQUNoQyxrREFBa0Q7QUFDbEQsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsYUFBYTtBQUNiLGFBQWE7QUFDYiw2Q0FBNkM7QUFDN0MsaUJBQWlCO0FBQ2pCLDJCQUEyQjtBQUMzQiwwQkFBMEI7QUFDMUIsYUFBYTtBQUNiLHVCQUF1QjtBQUN2QixxQkFBcUI7QUFDckIsaUNBQWlDO0FBQ2pDLGlDQUFpQztBQUNqQyw0QkFBNEI7QUFDNUIsMkJBQTJCO0FBQzNCLGlCQUFpQjtBQUNqQixlQUFlO0FBQ2YsYUFBYTtBQUNiLFVBQVU7QUFDVixVQUFVO0FBRVYsb0RBQW9EO0FBQ3BELHFDQUFxQztBQUNyQyxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLGlCQUFpQjtBQUNqQixxRUFBcUU7QUFDckUsd0JBQXdCO0FBQ3hCLDZCQUE2QjtBQUM3Qix1QkFBdUI7QUFDdkIsaUNBQWlDO0FBQ2pDLGlDQUFpQztBQUNqQyw0QkFBNEI7QUFDNUIsMkJBQTJCO0FBQzNCLG1CQUFtQjtBQUNuQixlQUFlO0FBQ2YsYUFBYTtBQUNiLFVBQVU7QUFDVixVQUFVO0FBQ1YsOEJBQThCO0FBQzlCLDJEQUEyRDtBQUUzRCw0REFBNEQ7QUFDNUQsdURBQXVEO0FBQ3ZELDhDQUE4QztBQUM5QyxnQkFBZ0I7QUFDaEIsbUJBQW1CO0FBQ25CLHVFQUF1RTtBQUN2RSwwQkFBMEI7QUFDMUIsK0JBQStCO0FBQy9CLHlCQUF5QjtBQUN6QixtQ0FBbUM7QUFDbkMsbUNBQW1DO0FBQ25DLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixlQUFlO0FBQ2YsYUFBYTtBQUNiLFVBQVU7QUFDVixVQUFVO0FBQ1YsMkZBQTJGO0FBQzNGLHFEQUFxRDtBQUNyRCxxREFBcUQ7QUFDckQsOENBQThDO0FBQzlDLGdCQUFnQjtBQUNoQixtQkFBbUI7QUFDbkIsdUVBQXVFO0FBQ3ZFLDBCQUEwQjtBQUMxQiwrQkFBK0I7QUFDL0IseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQyxtQ0FBbUM7QUFDbkMsOEJBQThCO0FBQzlCLDZCQUE2QjtBQUM3QixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGVBQWU7QUFDZixhQUFhO0FBQ2IsbUJBQW1CO0FBQ25CLHVFQUF1RTtBQUN2RSwwQkFBMEI7QUFDMUIsK0JBQStCO0FBQy9CLHlCQUF5QjtBQUN6QixtQ0FBbUM7QUFDbkMsbUNBQW1DO0FBQ25DLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixlQUFlO0FBQ2YsYUFBYTtBQUNiLFVBQVU7QUFDVixVQUFVO0FBQ1Ysd0VBQXdFO0FBQ3hFLCtEQUErRDtBQUMvRCxxREFBcUQ7QUFDckQsd0RBQXdEO0FBQ3hELHFEQUFxRDtBQUNyRCx3Q0FBd0M7QUFDeEMsOENBQThDO0FBQzlDLGdCQUFnQjtBQUNoQixtQkFBbUI7QUFDbkIsdUVBQXVFO0FBQ3ZFLDBCQUEwQjtBQUMxQiwrQkFBK0I7QUFDL0IseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQyxtQ0FBbUM7QUFDbkMsOEJBQThCO0FBQzlCLDZCQUE2QjtBQUM3QixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGVBQWU7QUFDZixhQUFhO0FBQ2IsbUJBQW1CO0FBQ25CLHVFQUF1RTtBQUN2RSwwQkFBMEI7QUFDMUIsK0JBQStCO0FBQy9CLHlCQUF5QjtBQUN6QixtQ0FBbUM7QUFDbkMsbUNBQW1DO0FBQ25DLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixlQUFlO0FBQ2YsYUFBYTtBQUNiLFVBQVU7QUFDVixVQUFVO0FBRVYsK0ZBQStGO0FBQy9GLHlEQUF5RDtBQUN6RCxxREFBcUQ7QUFDckQsOENBQThDO0FBQzlDLGdCQUFnQjtBQUNoQixtQkFBbUI7QUFDbkIsdUVBQXVFO0FBQ3ZFLDBCQUEwQjtBQUMxQiwrQkFBK0I7QUFDL0IseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQyxtQ0FBbUM7QUFDbkMsOEJBQThCO0FBQzlCLDZCQUE2QjtBQUM3QixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGVBQWU7QUFDZixhQUFhO0FBQ2IsVUFBVTtBQUNWLFVBQVU7QUFDVixrREFBa0Q7QUFDbEQsMkRBQTJEO0FBQzNELHFEQUFxRDtBQUNyRCx5REFBeUQ7QUFDekQsUUFBUTtBQUVSLGlDQUFpQztBQUNqQyw0QkFBNEI7QUFDNUIscURBQXFEO0FBQ3JELHVGQUF1RjtBQUN2RiwyREFBMkQ7QUFDM0QseURBQXlEO0FBQ3pELHdEQUF3RDtBQUN4RCxtQkFBbUI7QUFDbkIsc0JBQXNCO0FBQ3RCLGtDQUFrQztBQUNsQywwQ0FBMEM7QUFDMUMsMEJBQTBCO0FBQzFCLDhDQUE4QztBQUM5QyxnQ0FBZ0M7QUFDaEMsa0RBQWtEO0FBQ2xELG9CQUFvQjtBQUNwQixrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLGFBQWE7QUFDYixhQUFhO0FBQ2IsNkNBQTZDO0FBQzdDLGlCQUFpQjtBQUNqQiwyQkFBMkI7QUFDM0IsMEJBQTBCO0FBQzFCLGFBQWE7QUFDYix1QkFBdUI7QUFDdkIsaUNBQWlDO0FBQ2pDLDJCQUEyQjtBQUMzQixpQ0FBaUM7QUFDakMsNEJBQTRCO0FBQzVCLDJCQUEyQjtBQUMzQixxQkFBcUI7QUFDckIsZUFBZTtBQUNmLGFBQWE7QUFDYixVQUFVO0FBQ1YsVUFBVTtBQUNWLG9EQUFvRDtBQUNwRCw2Q0FBNkM7QUFDN0MsaUJBQWlCO0FBQ2pCLDJFQUEyRTtBQUMzRSx3QkFBd0I7QUFDeEIsNkJBQTZCO0FBQzdCLGlDQUFpQztBQUNqQywyQkFBMkI7QUFDM0IsaUNBQWlDO0FBQ2pDLDRCQUE0QjtBQUM1QiwyQkFBMkI7QUFDM0IscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZixhQUFhO0FBQ2IsVUFBVTtBQUNWLFVBQVU7QUFDVixRQUFRO0FBRVIsOEJBQThCO0FBQzlCLDRCQUE0QjtBQUM1QixxREFBcUQ7QUFDckQsbUZBQW1GO0FBQ25GLGlEQUFpRDtBQUNqRCxzREFBc0Q7QUFDdEQsc0JBQXNCO0FBQ3RCLHNFQUFzRTtBQUN0RSx1Q0FBdUM7QUFDdkMsaUVBQWlFO0FBQ2pFLHlGQUF5RjtBQUN6RixrREFBa0Q7QUFDbEQscUJBQXFCO0FBQ3JCLHdCQUF3QjtBQUN4QiwrQkFBK0I7QUFDL0Isb0NBQW9DO0FBQ3BDLDhCQUE4QjtBQUM5Qix3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLG1DQUFtQztBQUNuQyxrQ0FBa0M7QUFDbEMsMEJBQTBCO0FBQzFCLHNCQUFzQjtBQUN0QixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLGVBQWU7QUFDZixhQUFhO0FBQ2Isa0RBQWtEO0FBQ2xELDJDQUEyQztBQUMzQyxVQUFVO0FBQ1YsaUJBQWlCO0FBQ2pCLG9DQUFvQztBQUNwQyxxREFBcUQ7QUFDckQsVUFBVTtBQUNWLFFBQVE7QUFDUixTQUFTO0FBQ1QsK0RBQStEO0FBQy9ELGlEQUFpRDtBQUNqRCxnQkFBZ0I7QUFDaEIsbUJBQW1CO0FBQ25CLDBCQUEwQjtBQUMxQiwrQkFBK0I7QUFDL0IseUJBQXlCO0FBQ3pCLG1DQUFtQztBQUNuQyxtQ0FBbUM7QUFDbkMsOEJBQThCO0FBQzlCLDZCQUE2QjtBQUM3QixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGVBQWU7QUFDZixhQUFhO0FBQ2IsVUFBVTtBQUNWLFVBQVU7QUFDVixRQUFRO0FBQ1IsTUFBTTtBQUVOLDhCQUE4QjtBQUM5QixzQ0FBc0M7QUFDdEMsNEJBQTRCO0FBQzVCLHFEQUFxRDtBQUNyRCxtRkFBbUY7QUFDbkYsbURBQW1EO0FBQ25ELHlEQUF5RDtBQUN6RCxrR0FBa0c7QUFDbEcsZ0RBQWdEO0FBQ2hELG1CQUFtQjtBQUNuQixzQkFBc0I7QUFDdEIsaUNBQWlDO0FBQ2pDLDBDQUEwQztBQUMxQywwQkFBMEI7QUFDMUIsOENBQThDO0FBQzlDLGdDQUFnQztBQUNoQyxrREFBa0Q7QUFDbEQsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsYUFBYTtBQUNiLGFBQWE7QUFDYiw2RUFBNkU7QUFDN0UsUUFBUTtBQUVSLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIscURBQXFEO0FBQ3JELGlEQUFpRDtBQUNqRCx5RkFBeUY7QUFFekYsbURBQW1EO0FBQ25ELDREQUE0RDtBQUU1RCwyREFBMkQ7QUFDM0QsMEJBQTBCO0FBQzFCLHdEQUF3RDtBQUN4RCx5REFBeUQ7QUFDekQsOENBQThDO0FBQzlDLFVBQVU7QUFDVixpQkFBaUI7QUFDakIsdUNBQXVDO0FBQ3ZDLHFDQUFxQztBQUNyQyxxQkFBcUI7QUFDckIseUNBQXlDO0FBQ3pDLDJCQUEyQjtBQUMzQiw0QkFBNEI7QUFDNUIsZUFBZTtBQUNmLGFBQWE7QUFDYixVQUFVO0FBQ1YsUUFBUTtBQUNSLFNBQVM7QUFDVCw4REFBOEQ7QUFDOUQsaUVBQWlFO0FBQ2pFLDJEQUEyRDtBQUMzRCxRQUFRO0FBQ1Isc0RBQXNEO0FBQ3RELGdCQUFnQjtBQUNoQixtQkFBbUI7QUFDbkIsK0JBQStCO0FBQy9CLHVDQUF1QztBQUN2Qyx1QkFBdUI7QUFDdkIsMkNBQTJDO0FBQzNDLDZCQUE2QjtBQUM3Qiw4QkFBOEI7QUFDOUIsaUJBQWlCO0FBQ2pCLGVBQWU7QUFDZixhQUFhO0FBQ2IsVUFBVTtBQUNWLFVBQVU7QUFFViw2RUFBNkU7QUFDN0UsUUFBUTtBQUVSLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIscURBQXFEO0FBQ3JELGlEQUFpRDtBQUNqRCx5RkFBeUY7QUFDekYsNkRBQTZEO0FBQzdELGdFQUFnRTtBQUNoRSwwREFBMEQ7QUFDMUQsUUFBUTtBQUNSLHlEQUF5RDtBQUN6RCw4Q0FBOEM7QUFDOUMsVUFBVTtBQUNWLGlCQUFpQjtBQUNqQix1Q0FBdUM7QUFDdkMscUNBQXFDO0FBQ3JDLHFCQUFxQjtBQUNyQix5Q0FBeUM7QUFDekMsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1QixlQUFlO0FBQ2YsYUFBYTtBQUNiLFVBQVU7QUFDVixRQUFRO0FBQ1IsU0FBUztBQUNULGdEQUFnRDtBQUNoRCxvRUFBb0U7QUFFcEUsZ0RBQWdEO0FBQ2hELHlEQUF5RDtBQUN6RCxtRUFBbUU7QUFDbkUsNEJBQTRCO0FBQzVCLGdCQUFnQjtBQUNoQixxQkFBcUI7QUFDckIsK0JBQStCO0FBQy9CLG1CQUFtQjtBQUNuQixhQUFhO0FBQ2IsV0FBVztBQUNYLFFBQVE7QUFDUixNQUFNO0FBRU4sbUNBQW1DO0FBQ25DLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIscURBQXFEO0FBQ3JELDRFQUE0RTtBQUM1RSx3Q0FBd0M7QUFDeEMsd0ZBQXdGO0FBQ3hGLDBEQUEwRDtBQUMxRCw2REFBNkQ7QUFDN0QsZ0VBQWdFO0FBQ2hFLG9CQUFvQjtBQUNwQixVQUFVO0FBQ1Ysd0RBQXdEO0FBRXhELDhDQUE4QztBQUM5Qyx5RUFBeUU7QUFDekUsa0RBQWtEO0FBQ2xELG9CQUFvQjtBQUNwQiw4QkFBOEI7QUFDOUIsZ0NBQWdDO0FBQ2hDLDBCQUEwQjtBQUMxQixvQ0FBb0M7QUFDcEMsb0NBQW9DO0FBQ3BDLCtCQUErQjtBQUMvQiw4QkFBOEI7QUFDOUIsc0JBQXNCO0FBQ3RCLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsYUFBYTtBQUNiLGFBQWE7QUFDYixRQUFRO0FBRVIsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixxREFBcUQ7QUFDckQsa0VBQWtFO0FBQ2xFLHVEQUF1RDtBQUN2RCxVQUFVO0FBQ1YsK0RBQStEO0FBQy9ELFFBQVE7QUFDUixNQUFNO0FBRU4saUNBQWlDO0FBQ2pDLCtCQUErQjtBQUMvQix3QkFBd0I7QUFDeEIsaURBQWlEO0FBQ2pELFNBQVM7QUFDVCxzQ0FBc0M7QUFDdEMsUUFBUTtBQUNSLE1BQU0ifQ==
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHN0b3JlLWFwaS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kc3RvcmUtYXBpLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxJQUFJLE1BQU0sS0FBSyxDQUFDO0FBQ3ZCLE9BQU8sUUFBUSxNQUFNLDJCQUEyQixDQUFDO0FBRWpELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLENBQUMsd0NBQXdDO0FBQ25GLElBQUksUUFBUSxDQUFDO0FBRWIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDdkIsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDakMsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLFNBQVMsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9CLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxH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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datastore-api",
3
- "version": "1.1.2",
3
+ "version": "1.5.0",
4
4
  "description": "Simplified, more consitent API for Google Cloud Datastore",
5
5
  "main": "build/main/index.js",
6
6
  "typings": "build/main/index.d.ts",
@@ -22,7 +22,7 @@
22
22
  "test:lint": "eslint src --ext .ts",
23
23
  "test:prettier": "prettier \"src/**/*.ts\" --list-different",
24
24
  "test:spelling": "cspell \"{README.md,.github/*.md,src/**/*.ts}\"",
25
- "test:unit": "nyc --silent ava",
25
+ "test:unit": "nyc ava --verbose",
26
26
  "check-cli": "run-s test diff-integration-tests check-integration-tests",
27
27
  "check-integration-tests": "run-s check-integration-test:*",
28
28
  "diff-integration-tests": "mkdir -p diff && rm -rf diff/test && cp -r test diff/test && rm -rf diff/test/test-*/.git && cd diff && git init --quiet && git add -A && git commit --quiet --no-verify --allow-empty -m 'WIP' && echo '\\n\\nCommitted most recent integration test output in the \"diff\" directory. Review the changes with \"cd diff && git diff HEAD\" or your preferred git diff viewer.'",
@@ -32,7 +32,7 @@
32
32
  "cov:html": "nyc report --reporter=html",
33
33
  "cov:lcov": "nyc report --reporter=lcov",
34
34
  "cov:send": "run-s cov:lcov && codecov",
35
- "cov:check": "nyc report && nyc check-coverage --lines 100 --functions 100 --branches 100",
35
+ "cov:check": "nyc report && nyc check-coverage --lines 50 --functions 20 --branches 20",
36
36
  "doc": "run-s doc:html && open-cli build/docs/index.html",
37
37
  "doc:html": "typedoc src/ --exclude **/*.spec.ts --out build/docs",
38
38
  "doc:json": "typedoc src/ --exclude **/*.spec.ts --json build/docs/typedoc.json",
@@ -42,10 +42,11 @@
42
42
  "prepare-release": "run-s reset-hard test cov:check doc:html version doc:publish"
43
43
  },
44
44
  "engines": {
45
- "node": ">=10"
45
+ "node": ">=16"
46
46
  },
47
47
  "dependencies": {
48
- "assertate": "^2.4.0"
48
+ "assertate": "^2.4.0",
49
+ "google-datastore-emulator": "^5.1.0"
49
50
  },
50
51
  "devDependencies": {
51
52
  "@ava/typescript": "^1.1.1",
@@ -62,14 +63,14 @@
62
63
  "eslint": "^7.8.0",
63
64
  "eslint-config-prettier": "^6.11.0",
64
65
  "eslint-plugin-eslint-comments": "^3.2.0",
65
- "eslint-plugin-import": "^2.22.0",
66
+ "eslint-plugin-import": "2.25.4",
66
67
  "gh-pages": "^3.1.0",
67
68
  "npm-run-all": "^4.1.5",
68
69
  "nyc": "^15.1.0",
69
- "open-cli": "^6.0.1",
70
+ "open-cli": "7.0.1",
70
71
  "prettier": "^2.1.1",
71
72
  "standard-version": "^9.0.0",
72
- "ts-essentials": "^9.0.0",
73
+ "ts-essentials": "9.1.2",
73
74
  "ts-node": "^10.4.0",
74
75
  "typedoc": "^0.22.10",
75
76
  "typescript": "^4.0.2"