Skip to content
This repository was archived by the owner on May 25, 2025. It is now read-only.

Commit c83036d

Browse files
feat: modernize, convert to ESM
BREAKING CHANGE: ^^^
1 parent 0f84863 commit c83036d

14 files changed

+2038
-2854
lines changed

eslint.config.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
// prettier-ignore
2-
module.exports = [
3-
...require('@naturalcycles/dev-lib/cfg/eslint.config'),
1+
import sharedConfig from '@naturalcycles/dev-lib/cfg/eslint.config.js'
2+
3+
export default [
4+
...sharedConfig,
5+
{
6+
rules: {
7+
'@typescript-eslint/consistent-type-imports': 2,
8+
},
9+
},
410
]

jest.config.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

package.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"name": "@naturalcycles/firestore-lib",
3+
"type": "module",
34
"scripts": {
45
"prepare": "husky",
56
"build": "dev-lib build",
@@ -10,17 +11,18 @@
1011
},
1112
"dependencies": {
1213
"@google-cloud/firestore": "^7.0.0",
13-
"@naturalcycles/db-lib": "^9.0.0",
14+
"@naturalcycles/db-lib": "^10.0.2",
1415
"@naturalcycles/js-lib": "^14.6.0",
1516
"@naturalcycles/nodejs-lib": "^13.1.0"
1617
},
1718
"devDependencies": {
18-
"@naturalcycles/dev-lib": "^15.22.0",
19-
"@naturalcycles/test-lib": "^1.0.3",
19+
"@naturalcycles/dev-lib": "^17.3.0",
2020
"@types/node": "^22.7.5",
21+
"@vitest/coverage-v8": "^3.1.1",
2122
"dotenv": "^16.0.0",
22-
"firebase-admin": "^12.0.0",
23-
"jest": "^29.1.2"
23+
"firebase-admin": "^13.2.0",
24+
"tsx": "^4.19.3",
25+
"vitest": "^3.1.1"
2426
},
2527
"files": [
2628
"dist",
@@ -40,7 +42,7 @@
4042
"url": "https://github.com/NaturalCycles/firestore-lib"
4143
},
4244
"engines": {
43-
"node": ">=18.12.0"
45+
"node": ">=22.12.0"
4446
},
4547
"version": "1.1.9",
4648
"description": "Firestore implementation of CommonDB interface",

prettier.config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
module.exports = require('@naturalcycles/dev-lib/cfg/prettier.config')
1+
import sharedConfig from '@naturalcycles/dev-lib/cfg/prettier.config.js'
2+
3+
export default sharedConfig

src/firestore.db.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
import { test } from 'vitest'
2+
13
test('empty', () => {})

src/firestore.db.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
import {
2-
FieldValue,
1+
import type {
32
Firestore,
43
Query,
54
QueryDocumentSnapshot,
65
QuerySnapshot,
76
Transaction,
87
} from '@google-cloud/firestore'
9-
import {
10-
BaseCommonDB,
8+
import { FieldValue } from '@google-cloud/firestore'
9+
import type {
1110
CommonDB,
12-
commonDBFullSupport,
1311
CommonDBOptions,
1412
CommonDBSaveMethod,
1513
CommonDBSaveOptions,
@@ -21,20 +19,20 @@ import {
2119
DBTransactionFn,
2220
RunQueryResult,
2321
} from '@naturalcycles/db-lib'
22+
import { BaseCommonDB, commonDBFullSupport } from '@naturalcycles/db-lib'
23+
import type { ObjectWithId, StringMap } from '@naturalcycles/js-lib'
2424
import {
2525
_assert,
2626
_chunk,
2727
_filterUndefinedValues,
2828
_isTruthy,
2929
_omit,
3030
_stringMapEntries,
31-
ObjectWithId,
3231
pMap,
33-
StringMap,
3432
} from '@naturalcycles/js-lib'
35-
import { ReadableTyped } from '@naturalcycles/nodejs-lib'
36-
import { escapeDocId, unescapeDocId } from './firestore.util'
37-
import { dbQueryToFirestoreQuery } from './query.util'
33+
import type { ReadableTyped } from '@naturalcycles/nodejs-lib'
34+
import { escapeDocId, unescapeDocId } from './firestore.util.js'
35+
import { dbQueryToFirestoreQuery } from './query.util.js'
3836

3937
export interface FirestoreDBCfg {
4038
firestore: Firestore
@@ -306,6 +304,7 @@ export class FirestoreDB extends BaseCommonDB implements CommonDB {
306304
batch.set(
307305
col.doc(escapeDocId(id)),
308306
{
307+
// todo: lazy-load FieldValue
309308
[prop]: FieldValue.increment(increment),
310309
},
311310
{ merge: true },

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import { Firestore } from '@google-cloud/firestore'
2-
export * from './firestore.db'
3-
export * from './query.util'
2+
export * from './firestore.db.js'
3+
export * from './query.util.js'
44
export { Firestore }

src/query.util.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { Query, WhereFilterOp } from '@google-cloud/firestore'
2-
import { DBQuery, DBQueryFilterOperator } from '@naturalcycles/db-lib'
3-
import { ObjectWithId } from '@naturalcycles/js-lib'
1+
import type { Query, WhereFilterOp } from '@google-cloud/firestore'
2+
import type { DBQuery, DBQueryFilterOperator } from '@naturalcycles/db-lib'
3+
import type { ObjectWithId } from '@naturalcycles/js-lib'
44

55
// Map DBQueryFilterOp to WhereFilterOp
66
// Currently it's fully aligned!

src/test/firestore.manual.test.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import { createdUpdatedFields } from '@naturalcycles/db-lib'
2+
import type { TestItemDBM } from '@naturalcycles/db-lib/dist/testing/index.js'
23
import {
34
runCommonDaoTest,
45
runCommonDBTest,
56
TEST_TABLE,
6-
TestItemDBM,
7-
} from '@naturalcycles/db-lib/dist/testing'
8-
import { firestoreDB } from './firestore.mock'
9-
10-
jest.setTimeout(60000)
7+
} from '@naturalcycles/db-lib/dist/testing/index.js'
8+
import { describe, test } from 'vitest'
9+
import { firestoreDB } from './firestore.mock.js'
1110

1211
describe('runCommonDBTest', () => runCommonDBTest(firestoreDB))
1312

src/test/firestore.mock.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import 'dotenv/config'
12
import { base64ToString, requireEnvKeys } from '@naturalcycles/nodejs-lib'
23
import * as firebaseAdmin from 'firebase-admin'
3-
import { FirestoreDB } from '../index'
4-
require('dotenv').config()
4+
import { FirestoreDB } from '../index.js'
55

66
const { FIREBASE_DB_URL, SECRET_FIREBASE } = requireEnvKeys('FIREBASE_DB_URL', 'SECRET_FIREBASE')
77
const credential = firebaseAdmin.credential.cert(JSON.parse(base64ToString(SECRET_FIREBASE)))

0 commit comments

Comments
 (0)