Skip to content

Commit d7533b4

Browse files
docs(changeset): - Updated nodejs wrapper to support koffi
- Include nodejs 24 support - Drop nodejs 18 support - Added `Nonce` class to generate a nonce - Now relying on vitest Signed-off-by: Berend Sliedrecht <berend@animo.id>
1 parent d5c28b9 commit d7533b4

28 files changed

Lines changed: 77 additions & 149 deletions

.changeset/moody-rockets-roll.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
"@hyperledger/anoncreds-nodejs": minor
3+
"@hyperledger/anoncreds-shared": minor
4+
"@hyperledger/anoncreds-react-native": minor
5+
---
6+
7+
- Updated nodejs wrapper to support koffi
8+
- Include nodejs 24 support
9+
- Drop nodejs 18 support
10+
- Added `Nonce` class to generate a nonce
11+
- Now relying on vitest

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
strategy:
4747
fail-fast: false
4848
matrix:
49-
node-version: [18, 20, 22]
49+
node-version: [20, 22, 24]
5050

5151
steps:
5252
- name: Checkout Repo
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { registerRootComponent } from 'expo'
2-
32
import { App } from './App'
43

54
registerRootComponent(App)
Lines changed: 4 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,11 @@
11
import { ObjectHandle } from '@hyperledger/anoncreds-shared'
2-
32
import {
43
i32ListToI32ListStruct,
54
objectHandleListToObjectHandleListStruct,
65
stringListToStringListStruct,
76
} from './conversion'
8-
import { ByteBufferStruct, I32ListStruct, StringListStruct } from './structures'
9-
10-
type Argument = Record<string, unknown> | unknown[] | Date | Uint8Array | SerializedArgument | boolean | ObjectHandle
11-
12-
type SerializedArgument = string | number | Uint8Array | Record<string, unknown> | null
13-
14-
type SerializedArguments = Record<string, SerializedArgument>
15-
16-
export type SerializedOptions<Type> = Required<{
17-
[Property in keyof Type]: Type[Property] extends string
18-
? string
19-
: Type[Property] extends number
20-
? number
21-
: Type[Property] extends boolean
22-
? number
23-
: Type[Property] extends boolean | undefined
24-
? number
25-
: Type[Property] extends Record<string, unknown>
26-
? string
27-
: Type[Property] extends string[]
28-
? string[]
29-
: Type[Property] extends string[] | undefined
30-
? string[]
31-
: Type[Property] extends number[]
32-
? number[]
33-
: Type[Property] extends number[] | undefined
34-
? number[]
35-
: Type[Property] extends Date
36-
? number
37-
: Type[Property] extends Date | undefined
38-
? number
39-
: Type[Property] extends string | undefined
40-
? string
41-
: Type[Property] extends number | undefined
42-
? number
43-
: Type[Property] extends Uint8Array
44-
? Uint8Array
45-
: Type[Property] extends ObjectHandle
46-
? number
47-
: Type[Property] extends ObjectHandle[]
48-
? number[]
49-
: Type[Property] extends ObjectHandle[] | undefined
50-
? number[]
51-
: Type[Property] extends ObjectHandle | undefined
52-
? number
53-
: Type[Property] extends Uint8Array
54-
? typeof ByteBufferStruct
55-
: Type[Property] extends Uint8Array | undefined
56-
? typeof ByteBufferStruct
57-
: Type[Property] extends unknown[] | undefined
58-
? string
59-
: Type[Property] extends Record<string, unknown> | undefined
60-
? string
61-
: unknown
62-
}>
637

64-
const serialize = (arg: Argument): SerializedArgument => {
8+
const serialize = (arg: unknown): unknown => {
659
switch (typeof arg) {
6610
case 'undefined':
6711
return null
@@ -94,12 +38,10 @@ const serialize = (arg: Argument): SerializedArgument => {
9438
}
9539
}
9640

97-
export const serializeArguments = <T extends Record<string, Argument> = Record<string, Argument>>(
98-
args: T
99-
): SerializedOptions<T> => {
100-
const retVal: SerializedArguments = {}
41+
export const serializeArguments = <T extends Record<string, unknown> = Record<string, unknown>>(args: T) => {
42+
const retVal: Record<string, unknown> = {}
10143
for (const [key, val] of Object.entries(args)) {
10244
retVal[key] = serialize(val)
10345
}
104-
return retVal as SerializedOptions<T>
46+
return retVal
10547
}

packages/anoncreds-nodejs/src/ffi/structures.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,21 @@ export const StringListStruct = koffi.struct('StringListStruct', {
1616
data: koffi.pointer(FFI_STRING),
1717
})
1818

19+
export type StringListStructType = {
20+
count: number
21+
data: string[]
22+
}
23+
1924
export const I32ListStruct = koffi.struct('I32ListStruct', {
2025
count: FFI_USIZE,
2126
data: koffi.pointer(FFI_INT32),
2227
})
2328

29+
export type I32ListStructType = {
30+
count: number
31+
data: number[]
32+
}
33+
2434
export const CredRevInfoStruct = koffi.struct('CredRevInfoStruct', {
2535
reg_def: FFI_OBJECT_HANDLE,
2636
reg_def_private: FFI_OBJECT_HANDLE,
@@ -51,11 +61,16 @@ export const CredentialProveStructList = koffi.struct('CredentialProveStructList
5161
data: koffi.pointer(CredentialProveStruct),
5262
})
5363

54-
export const ObjectHandleList = koffi.struct('ObjectHandleList', {
64+
export const ObjectHandleStructList = koffi.struct('ObjectHandleStructList', {
5565
count: FFI_USIZE,
5666
data: koffi.pointer(FFI_OBJECT_HANDLE),
5767
})
5868

69+
export type ObjectHandleStructListType = {
70+
count: number
71+
data: number[]
72+
}
73+
5974
export const NonrevokedIntervalOverrideStruct = koffi.struct('NonrevokedIntervalOverrideStruct', {
6075
rev_reg_def_id: FFI_STRING,
6176
requested_from_ts: FFI_INT32,

packages/anoncreds-nodejs/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NativeAnoncreds } from '@hyperledger/anoncreds-shared'
2-
32
import { NodeJSAnoncreds } from './NodeJSAnoncreds'
43

54
export const anoncredsNodeJS = new NodeJSAnoncreds()

packages/anoncreds-nodejs/src/library/bindings.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
FFI_VOID,
1313
I32ListStruct,
1414
NonrevokedIntervalOverrideStructList,
15-
ObjectHandleList,
15+
ObjectHandleStructList,
1616
StringListStruct,
1717
} from '../ffi'
1818

@@ -285,9 +285,9 @@ export const nativeBindings: Record<string, [koffi.TypeSpec, Array<koffi.TypeSpe
285285
StringListStruct,
286286
StringListStruct,
287287
FFI_STRING,
288-
ObjectHandleList,
288+
ObjectHandleStructList,
289289
StringListStruct,
290-
ObjectHandleList,
290+
ObjectHandleStructList,
291291
StringListStruct,
292292
koffi.out(koffi.pointer(FFI_OBJECT_HANDLE)),
293293
],
@@ -298,13 +298,13 @@ export const nativeBindings: Record<string, [koffi.TypeSpec, Array<koffi.TypeSpe
298298
[
299299
FFI_OBJECT_HANDLE,
300300
FFI_OBJECT_HANDLE,
301-
ObjectHandleList,
301+
ObjectHandleStructList,
302302
StringListStruct,
303-
ObjectHandleList,
303+
ObjectHandleStructList,
304304
StringListStruct,
305-
ObjectHandleList,
305+
ObjectHandleStructList,
306306
StringListStruct,
307-
ObjectHandleList,
307+
ObjectHandleStructList,
308308
NonrevokedIntervalOverrideStructList,
309309
koffi.out(koffi.pointer(FFI_INT8)),
310310
],
@@ -318,9 +318,9 @@ export const nativeBindings: Record<string, [koffi.TypeSpec, Array<koffi.TypeSpe
318318
CredentialEntryStructList,
319319
CredentialProveStructList,
320320
FFI_STRING,
321-
ObjectHandleList,
321+
ObjectHandleStructList,
322322
StringListStruct,
323-
ObjectHandleList,
323+
ObjectHandleStructList,
324324
StringListStruct,
325325
FFI_STRING,
326326
koffi.out(koffi.pointer(FFI_OBJECT_HANDLE)),
@@ -335,13 +335,13 @@ export const nativeBindings: Record<string, [koffi.TypeSpec, Array<koffi.TypeSpe
335335
[
336336
FFI_OBJECT_HANDLE,
337337
FFI_OBJECT_HANDLE,
338-
ObjectHandleList,
338+
ObjectHandleStructList,
339339
StringListStruct,
340-
ObjectHandleList,
340+
ObjectHandleStructList,
341341
StringListStruct,
342-
ObjectHandleList,
342+
ObjectHandleStructList,
343343
StringListStruct,
344-
ObjectHandleList,
344+
ObjectHandleStructList,
345345
NonrevokedIntervalOverrideStructList,
346346
koffi.out(koffi.pointer(FFI_INT8)),
347347
],

packages/anoncreds-nodejs/tests/api.test.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ import {
1515
W3cCredential,
1616
W3cPresentation,
1717
} from '@hyperledger/anoncreds-shared'
18-
19-
import { setup } from './utils'
20-
21-
import { beforeAll, describe, expect, test } from 'vitest'
18+
import { describe, expect, test } from 'vitest'
2219

2320
describe('API', () => {
2421
test('create and verify presentation', () => {
@@ -344,8 +341,6 @@ describe('API', () => {
344341
})
345342

346343
test('create and verify presentation passing only JSON objects as parameters', () => {
347-
setup()
348-
349344
const nonce = Nonce.generate()
350345

351346
// a schema can be created from JSON
@@ -534,8 +529,6 @@ test('create and verify presentation passing only JSON objects as parameters', (
534529
})
535530

536531
describe('API W3C', () => {
537-
beforeAll(setup)
538-
539532
test('create and verify w3c presentation', () => {
540533
const nonce = Nonce.generate()
541534

packages/anoncreds-nodejs/tests/utils/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/anoncreds-nodejs/tests/utils/initialize.ts

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

0 commit comments

Comments
 (0)