Skip to content

Commit 9a0a5ed

Browse files
committed
Fix: Import binary. Require not allowed with ESM
1 parent f828189 commit 9a0a5ed

File tree

8 files changed

+126
-68
lines changed

8 files changed

+126
-68
lines changed

js-src/Builder.ts

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import type { Manifest } from "@contentauth/c2pa-types";
1515

16-
const neon = require("./index.node");
16+
import { getNeonBinary } from "./binary.js";
1717
import type {
1818
BuilderInterface,
1919
CallbackSignerInterface,
@@ -33,7 +33,7 @@ export class Builder implements BuilderInterface {
3333
private constructor(private builder: NeonBuilderHandle) {}
3434

3535
static new(): Builder {
36-
const builder: NeonBuilderHandle = neon.builderNew();
36+
const builder: NeonBuilderHandle = getNeonBinary().builderNew();
3737
return new Builder(builder);
3838
}
3939

@@ -52,24 +52,25 @@ export class Builder implements BuilderInterface {
5252
"Failed to stringify JSON Manifest Definition: Unknown error",
5353
);
5454
}
55-
const builder: NeonBuilderHandle = neon.builderWithJson(jsonString);
55+
const builder: NeonBuilderHandle =
56+
getNeonBinary().builderWithJson(jsonString);
5657
return new Builder(builder);
5758
}
5859

5960
setNoEmbed(noEmbed = true): void {
60-
neon.builderSetNoEmbed.call(this.builder, noEmbed);
61+
getNeonBinary().builderSetNoEmbed.call(this.builder, noEmbed);
6162
}
6263

6364
setRemoteUrl(remoteUrl: string): void {
64-
neon.builderSetRemoteUrl.call(this.builder, remoteUrl);
65+
getNeonBinary().builderSetRemoteUrl.call(this.builder, remoteUrl);
6566
}
6667

6768
addAssertion(
6869
label: string,
6970
assertion: unknown,
7071
assertionKind?: ManifestAssertionKind,
7172
): void {
72-
return neon.builderAddAssertion.call(
73+
return getNeonBinary().builderAddAssertion.call(
7374
this.builder,
7475
label,
7576
assertion,
@@ -78,34 +79,39 @@ export class Builder implements BuilderInterface {
7879
}
7980

8081
async addResource(uri: string, resource: SourceAsset): Promise<void> {
81-
return neon.builderAddResource.call(this.builder, uri, resource);
82+
return getNeonBinary().builderAddResource.call(this.builder, uri, resource);
8283
}
8384

8485
async addIngredient(
8586
ingredientJson: string,
8687
ingredient: SourceAsset,
8788
): Promise<void> {
88-
return neon.builderAddIngredient.call(
89+
return getNeonBinary().builderAddIngredient.call(
8990
this.builder,
9091
ingredientJson,
9192
ingredient,
9293
);
9394
}
9495

9596
async toArchive(asset: DestinationAsset): Promise<void> {
96-
return neon.builderToArchive.call(this.builder, asset);
97+
return getNeonBinary().builderToArchive.call(this.builder, asset);
9798
}
9899

99100
static async fromArchive(asset: SourceAsset): Promise<Builder> {
100-
return new Builder(await neon.builderFromArchive(asset));
101+
return new Builder(await getNeonBinary().builderFromArchive(asset));
101102
}
102103

103104
sign(
104105
signer: LocalSignerInterface,
105106
input: SourceAsset,
106107
output: DestinationAsset,
107108
): Buffer {
108-
return neon.builderSign.call(this.builder, signer.signer(), input, output);
109+
return getNeonBinary().builderSign.call(
110+
this.builder,
111+
signer.signer(),
112+
input,
113+
output,
114+
);
109115
}
110116

111117
signFile(
@@ -114,7 +120,12 @@ export class Builder implements BuilderInterface {
114120
output: DestinationAsset,
115121
): Buffer {
116122
const input: FileAsset = { path: filePath };
117-
return neon.builderSign.call(this.builder, signer.signer(), input, output);
123+
return getNeonBinary().builderSign.call(
124+
this.builder,
125+
signer.signer(),
126+
input,
127+
output,
128+
);
118129
}
119130

120131
async signConfigAsync(
@@ -123,8 +134,14 @@ export class Builder implements BuilderInterface {
123134
input: SourceAsset,
124135
output: DestinationAsset,
125136
): Promise<Buffer> {
126-
return neon.builderSignConfigAsync
127-
.call(this.builder, callback, signerConfig, input, output)
137+
return getNeonBinary()
138+
.builderSignConfigAsync.call(
139+
this.builder,
140+
callback,
141+
signerConfig,
142+
input,
143+
output,
144+
)
128145
.then((result: Buffer | { manifest: Buffer; signedAsset: Buffer }) => {
129146
// output is a buffer and result is the manifest and the signed asset.
130147
if ("buffer" in output) {
@@ -152,8 +169,8 @@ export class Builder implements BuilderInterface {
152169
const neonHandle = signer.signer();
153170
const isIdentity = signer instanceof IdentityAssertionSigner;
154171
const neonFn = isIdentity
155-
? neon.builderIdentitySignAsync
156-
: neon.builderSignAsync;
172+
? getNeonBinary().builderIdentitySignAsync
173+
: getNeonBinary().builderSignAsync;
157174
return neonFn
158175
.call(this.builder, neonHandle, input, output)
159176
.then((result: Buffer | { manifest: Buffer; signedAsset: Buffer }) => {
@@ -176,10 +193,16 @@ export class Builder implements BuilderInterface {
176193
}
177194

178195
getManifestDefinition(): Manifest {
179-
return JSON.parse(neon.builderManifestDefinition.call(this.builder));
196+
return JSON.parse(
197+
getNeonBinary().builderManifestDefinition.call(this.builder),
198+
);
180199
}
181200

182201
updateManifestProperty(property: string, value: ClaimVersion): void {
183-
neon.builderUpdateManifestProperty.call(this.builder, property, value);
202+
getNeonBinary().builderUpdateManifestProperty.call(
203+
this.builder,
204+
property,
205+
value,
206+
);
184207
}
185208
}

js-src/IdentityAssertion.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// specific language governing permissions and limitations under
1212
// each license.
1313

14-
const neon = require("./index.node");
14+
import { getNeonBinary } from "./binary.js";
1515
import type {
1616
CallbackCredentialHolderInterface,
1717
IdentityAssertionBuilderInterface,
@@ -31,21 +31,21 @@ export class IdentityAssertionBuilder
3131
static async identityBuilderForCredentialHolder(
3232
credentialHolder: CallbackCredentialHolderInterface,
3333
): Promise<IdentityAssertionBuilder> {
34-
const builder = neon.identityBuilderForCredentialHolder(
34+
const builder = getNeonBinary().identityBuilderForCredentialHolder(
3535
credentialHolder.signer(),
3636
);
3737
return new IdentityAssertionBuilder(builder);
3838
}
3939

4040
addReferencedAssertions(referencedAssertions: string[]): void {
41-
neon.identityBuilderAddReferencedAssertions.call(
41+
getNeonBinary().identityBuilderAddReferencedAssertions.call(
4242
this._builder,
4343
referencedAssertions,
4444
);
4545
}
4646

4747
addRoles(roles: string[]): void {
48-
neon.identityBuilderAddRoles.call(this._builder, roles);
48+
getNeonBinary().identityBuilderAddRoles.call(this._builder, roles);
4949
}
5050

5151
builder(): NeonIdentityAssertionBuilderHandle {
@@ -59,14 +59,14 @@ export class IdentityAssertionSigner
5959
constructor(private _signer: NeonIdentityAssertionSignerHandle) {}
6060

6161
static new(signer: NeonCallbackSignerHandle): IdentityAssertionSigner {
62-
const identitySigner = neon.identitySignerNew(signer);
62+
const identitySigner = getNeonBinary().identitySignerNew(signer);
6363
return new IdentityAssertionSigner(identitySigner);
6464
}
6565

6666
addIdentityAssertion(
6767
identityAssertionBuilder: IdentityAssertionBuilder,
6868
): void {
69-
neon.identitySignerAddIdentityAssertion.call(
69+
getNeonBinary().identitySignerAddIdentityAssertion.call(
7070
this._signer,
7171
identityAssertionBuilder.builder(),
7272
);
@@ -93,7 +93,7 @@ export class CallbackCredentialHolder
9393
sigType: string,
9494
callback: (signerPayload: SignerPayload) => Promise<Buffer>,
9595
) {
96-
const credentialHolder = neon.newCallbackCredentialHolder(
96+
const credentialHolder = getNeonBinary().newCallbackCredentialHolder(
9797
reserveSize,
9898
sigType,
9999
callback,
@@ -102,20 +102,20 @@ export class CallbackCredentialHolder
102102
}
103103

104104
async sign(payload: SignerPayload): Promise<Buffer> {
105-
return neon.callbackSignerSignPayload.call(
105+
return getNeonBinary().callbackSignerSignPayload.call(
106106
this.callbackCredentialHolder,
107107
payload,
108108
);
109109
}
110110

111111
reserveSize(): number {
112-
return neon.callbackCredentialHolderReserveSize.call(
112+
return getNeonBinary().callbackCredentialHolderReserveSize.call(
113113
this.callbackCredentialHolder,
114114
);
115115
}
116116

117117
sigType(): string {
118-
return neon.callbackCredentialHolderSigType.call(
118+
return getNeonBinary().callbackCredentialHolderSigType.call(
119119
this.callbackCredentialHolder,
120120
);
121121
}

js-src/Reader.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import type { Manifest, ManifestStore } from "@contentauth/c2pa-types";
1515

16-
const neon = require("./index.node");
16+
import { getNeonBinary } from "./binary.js";
1717
import type {
1818
DestinationAsset,
1919
ReaderInterface,
@@ -25,34 +25,33 @@ export class Reader implements ReaderInterface {
2525
constructor(private reader: NeonReaderHandle) {}
2626

2727
json(): ManifestStore {
28-
return JSON.parse(neon.readerJson.call(this.reader));
28+
return JSON.parse(getNeonBinary().readerJson.call(this.reader));
2929
}
3030

3131
remoteUrl(): string {
32-
return neon.readerRemoteUrl.call(this.reader);
32+
return getNeonBinary().readerRemoteUrl.call(this.reader);
3333
}
3434

3535
isEmbedded(): boolean {
36-
return neon.readerIsEmbedded.call(this.reader);
36+
return getNeonBinary().readerIsEmbedded.call(this.reader);
3737
}
3838

3939
async resourceToAsset(uri: string, asset: DestinationAsset): Promise<number> {
40-
return neon.readerResourceToAsset.call(this.reader, uri, asset);
40+
return getNeonBinary().readerResourceToAsset.call(this.reader, uri, asset);
4141
}
4242

4343
static async fromAsset(asset: SourceAsset): Promise<Reader> {
44-
const reader: NeonReaderHandle = await neon.readerFromAsset(asset);
44+
const reader: NeonReaderHandle =
45+
await getNeonBinary().readerFromAsset(asset);
4546
return new Reader(reader);
4647
}
4748

4849
static async fromManifestDataAndAsset(
4950
manifestData: Buffer,
5051
asset: SourceAsset,
5152
): Promise<Reader> {
52-
const reader: NeonReaderHandle = await neon.readerFromManifestDataAndAsset(
53-
manifestData,
54-
asset,
55-
);
53+
const reader: NeonReaderHandle =
54+
await getNeonBinary().readerFromManifestDataAndAsset(manifestData, asset);
5655
return new Reader(reader);
5756
}
5857

@@ -75,6 +74,6 @@ export class Reader implements ReaderInterface {
7574
}
7675

7776
async postValidateCawg(): Promise<void> {
78-
return neon.readerPostValidateCawg.call(this.reader);
77+
return getNeonBinary().readerPostValidateCawg.call(this.reader);
7978
}
8079
}

js-src/Settings.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@ import * as fs from "fs-extra";
1515
import path from "path";
1616
import fetch from "node-fetch";
1717

18-
const neon = require("./index.node");
18+
import { getNeonBinary } from "./binary.js";
1919
import type { TrustConfig, VerifyConfig } from "./types.d.ts";
2020

2121
/**
2222
* Load settings from a JSON string and apply them globally.
2323
* @param json The JSON string containing the settings configuration
2424
*/
2525
export function loadC2paSettings(json: string): void {
26-
neon.loadSettings(json);
26+
getNeonBinary().loadSettings(json);
2727
}
2828

2929
/**
3030
* Load settings from a TOML string and apply them globally.
3131
* @param toml The TOML string containing the settings configuration
3232
*/
3333
export function loadC2paSettingsToml(toml: string): void {
34-
neon.loadSettingsToml(toml);
34+
getNeonBinary().loadSettingsToml(toml);
3535
}
3636

3737
/**
@@ -81,7 +81,7 @@ export async function loadSettingsFromUrl(url: string): Promise<void> {
8181
* @returns The JSON representation of the current settings
8282
*/
8383
export function getSettingsJson(): string {
84-
return neon.getSettingsJson();
84+
return getNeonBinary().getSettingsJson();
8585
}
8686

8787
/**
@@ -98,7 +98,7 @@ export function loadTrustConfig(trustConfig: TrustConfig): void {
9898
trust_config: trustConfig.trustConfig ?? null,
9999
allowed_list: trustConfig.allowedList ?? null,
100100
};
101-
neon.loadTrustConfig(JSON.stringify(config));
101+
getNeonBinary().loadTrustConfig(JSON.stringify(config));
102102
}
103103

104104
/**
@@ -115,15 +115,15 @@ export function loadCawgTrustConfig(trustConfig: TrustConfig): void {
115115
trust_config: trustConfig.trustConfig ?? null,
116116
allowed_list: trustConfig.allowedList ?? null,
117117
};
118-
neon.loadCawgTrustConfig(JSON.stringify(config));
118+
getNeonBinary().loadCawgTrustConfig(JSON.stringify(config));
119119
}
120120

121121
/**
122122
* Get the current trust configuration.
123123
* @returns The current trust configuration object
124124
*/
125125
export function getTrustConfig(): TrustConfig {
126-
const json = neon.getTrustConfig();
126+
const json = getNeonBinary().getTrustConfig();
127127
const parsed = JSON.parse(json);
128128

129129
// Convert snake_case to camelCase to match TrustConfig interface
@@ -142,7 +142,7 @@ export function getTrustConfig(): TrustConfig {
142142
* @returns The current CAWG trust configuration object
143143
*/
144144
export function getCawgTrustConfig(): TrustConfig {
145-
const json = neon.getCawgTrustConfig();
145+
const json = getNeonBinary().getCawgTrustConfig();
146146
const parsed = JSON.parse(json);
147147

148148
// Convert snake_case to camelCase to match TrustConfig interface
@@ -174,7 +174,7 @@ export function loadVerifyConfig(verifyConfig: VerifyConfig): void {
174174
verifyConfig.skipIngredientConflictResolution,
175175
strict_v1_validation: verifyConfig.strictV1Validation,
176176
};
177-
neon.loadVerifyConfig(JSON.stringify(config));
177+
getNeonBinary().loadVerifyConfig(JSON.stringify(config));
178178
}
179179

180180
/**
@@ -192,7 +192,7 @@ export function patchVerifyConfig(patch: Partial<VerifyConfig>): void {
192192
* @returns The current verify configuration object
193193
*/
194194
export function getVerifyConfig(): VerifyConfig {
195-
const json = neon.getVerifyConfig();
195+
const json = getNeonBinary().getVerifyConfig();
196196
const parsed = JSON.parse(json);
197197

198198
// Convert snake_case to camelCase to match VerifyConfig interface

0 commit comments

Comments
 (0)