electron-webauthn 0.0.7 → 0.0.9

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/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  declare function getCredential(rpid: string, challenge: Buffer, nativeWindowHandle: Buffer): {
2
2
  [key: string]: import("objc-js").NobjcMethod;
3
- initWithAuthorizationRequests$(authorizationRequests: import("objc-js").NobjcObject): any;
3
+ initWithAuthorizationRequests$(authorizationRequests: import("objc-js").NobjcObject): /*elided*/ any;
4
4
  performRequests(): void;
5
5
  performRequestsWithOptions$(options: import("objc-js").NobjcObject): void;
6
6
  performAutoFillAssistedRequests(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,iBAAS,aAAa,CACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM;;;;;;;;;;;EAmD3B;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,iBAAS,aAAa,CACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM;;;;;;;;;;;EAsD3B;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -32,9 +32,12 @@ function getCredential(rpid, challenge, nativeWindowHandle) {
32
32
  // authController.presentationContextProvider = self
33
33
  const presentationContextProvider = createPresentationContextProvider({
34
34
  presentationAnchorForAuthorizationController: (controller) => {
35
+ // return NSStringFromString("Hello, world!");
35
36
  // Return the NSWindow to present the authorization UI in
36
37
  const nsView = fromPointer(nativeWindowHandle);
38
+ console.log("nsView", nsView);
37
39
  const nsWindow = nsView.window();
40
+ console.log("nsWindow", nsWindow);
38
41
  return nsWindow;
39
42
  },
40
43
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,qCAAqC,EAAE,MAAM,wEAAwE,CAAC;AAC/H,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,iCAAiC,EAAE,MAAM,8FAA8F,CAAC;AACjJ,OAAO,EAAE,yCAAyC,EAAE,MAAM,4FAA4F,CAAC;AACvJ,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAInE,SAAS,aAAa,CACpB,IAAY,EACZ,SAAiB,EACjB,kBAA0B;IAE1B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzC,sDAAsD;IACtD,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAEjD,mHAAmH;IACnH,MAAM,gBAAgB,GAAG,yCAAyC,CAAC,OAAO,CAAC,CAAC;IAE5E,mGAAmG;IACnG,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,8CAA8C,CAC7D,YAAY,CACb,CAAC;IAEJ,8FAA8F;IAC9F,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAC;IAEpE,iCAAiC;IACjC,MAAM,QAAQ,GAAG,qCAAqC,CAAC;QACrD,4BAA4B,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC;QACD,oBAAoB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;YAC1C,2CAA2C;YAC3C,MAAM,WAAW,GAAG,KAA6C,CAAC;YAClE,OAAO,CAAC,KAAK,CACX,uBAAuB,EACvB,WAAW,CAAC,oBAAoB,EAAE,CAAC,UAAU,EAAE,CAChD,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IACH,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEtC,oDAAoD;IACpD,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;QACpE,4CAA4C,EAAE,CAAC,UAAU,EAAE,EAAE;YAC3D,yDAAyD;YACzD,MAAM,MAAM,GAAG,WAAW,CAAC,kBAAkB,CAAuB,CAAC;YACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;IACH,cAAc,CAAC,+BAA+B,CAAC,2BAA2B,CAAC,CAAC;IAE5E,mCAAmC;IACnC,cAAc,CAAC,eAAe,EAAE,CAAC;IAEjC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,qCAAqC,EAAE,MAAM,wEAAwE,CAAC;AAC/H,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,iCAAiC,EAAE,MAAM,8FAA8F,CAAC;AACjJ,OAAO,EAAE,yCAAyC,EAAE,MAAM,4FAA4F,CAAC;AACvJ,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAInE,SAAS,aAAa,CACpB,IAAY,EACZ,SAAiB,EACjB,kBAA0B;IAE1B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzC,sDAAsD;IACtD,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAEjD,mHAAmH;IACnH,MAAM,gBAAgB,GAAG,yCAAyC,CAAC,OAAO,CAAC,CAAC;IAE5E,mGAAmG;IACnG,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,8CAA8C,CAC7D,YAAY,CACb,CAAC;IAEJ,8FAA8F;IAC9F,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAC;IAEpE,iCAAiC;IACjC,MAAM,QAAQ,GAAG,qCAAqC,CAAC;QACrD,4BAA4B,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC;QACD,oBAAoB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;YAC1C,2CAA2C;YAC3C,MAAM,WAAW,GAAG,KAA6C,CAAC;YAClE,OAAO,CAAC,KAAK,CACX,uBAAuB,EACvB,WAAW,CAAC,oBAAoB,EAAE,CAAC,UAAU,EAAE,CAChD,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IACH,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEtC,oDAAoD;IACpD,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;QACpE,4CAA4C,EAAE,CAAC,UAAU,EAAE,EAAE;YAC3D,8CAA8C;YAC9C,yDAAyD;YACzD,MAAM,MAAM,GAAG,WAAW,CAAC,kBAAkB,CAAuB,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClC,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;IACH,cAAc,CAAC,+BAA+B,CAAC,2BAA2B,CAAC,CAAC;IAE5E,mCAAmC;IACnC,cAAc,CAAC,eAAe,EAAE,CAAC;IAEjC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -5,5 +5,5 @@ const window = createEmptyWindow();
5
5
  const nsView = getNativeWindowHandle(window);
6
6
  const nsViewPointer = getPointer(nsView);
7
7
  const result = getCredential("example.com", Buffer.from("challenge"), nsViewPointer);
8
- console.log(result);
8
+ console.log("Result:", result);
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;AACnC,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,MAAM,GAAG,aAAa,CAC1B,aAAa,EACb,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EACxB,aAAa,CACd,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;AACnC,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,MAAM,GAAG,aAAa,CAC1B,aAAa,EACb,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EACxB,aAAa,CACd,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "electron-webauthn",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "repository": "https://github.com/iamEvanYT/electron-webauthn",
5
5
  "description": "Add support for WebAuthn for Electron.",
6
6
  "main": "dist/index.js",
@@ -18,6 +18,7 @@
18
18
  ],
19
19
  "type": "module",
20
20
  "scripts": {
21
+ "build": "tsc",
21
22
  "test": "bun run src/test/index.ts"
22
23
  },
23
24
  "devDependencies": {
@@ -27,7 +28,7 @@
27
28
  "typescript": "^5"
28
29
  },
29
30
  "dependencies": {
30
- "objc-js": "^0.0.10"
31
+ "objc-js": "^0.0.12"
31
32
  },
32
33
  "trustedDependencies": [
33
34
  "objc-js"
package/dist/example.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=example.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":""}
package/dist/example.js DELETED
@@ -1,24 +0,0 @@
1
- import { NSData } from "./objc/foundation/nsdata.js";
2
- import { NSString } from "./objc/foundation/nsstring.js";
3
- import { NSArray } from "./objc/foundation/nsarray.js";
4
- const myString = NSString.stringWithUTF8String$("Hello from Objective-C!");
5
- console.log("Created NSString:", myString);
6
- const buf = Buffer.from("Hello from Objective-C!");
7
- const myData = NSData.dataWithBytes$length$(buf, buf.length);
8
- console.log("Created NSData:", myData);
9
- // Test NSArray
10
- const str1 = NSString.stringWithUTF8String$("First");
11
- const str2 = NSString.stringWithUTF8String$("Second");
12
- const str3 = NSString.stringWithUTF8String$("Third");
13
- // Create array with one object, then add more
14
- let myArray = NSArray.arrayWithObject$(str1);
15
- myArray = myArray.arrayByAddingObject$(str2);
16
- myArray = myArray.arrayByAddingObject$(str3);
17
- console.log("Created NSArray with count:", myArray.count());
18
- // Access elements
19
- for (let i = 0; i < myArray.count(); i++) {
20
- const obj = myArray.objectAtIndex$(i);
21
- const nsString = obj;
22
- console.log(`Array[${i}]:`, nsString.UTF8String());
23
- }
24
- //# sourceMappingURL=example.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.js","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAC3E,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AAE3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7D,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAEvC,eAAe;AACf,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAErD,8CAA8C;AAC9C,IAAI,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC7C,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7C,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAE7C,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAE5D,kBAAkB;AAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAQ,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAkB,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,CAAC"}
package/dist/helper.js DELETED
@@ -1,23 +0,0 @@
1
- import { NobjcLibrary, NobjcObject } from "@iamevan/nobjc";
2
- // Load the Foundation framework
3
- export const foundation = new NobjcLibrary("/System/Library/Frameworks/Foundation.framework/Foundation");
4
- // Load the AuthenticationServices framework
5
- export const authServices = new NobjcLibrary("/System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices");
6
- // NSString helpers
7
- const NSString = foundation["NSString"];
8
- const _stringWithUTF8String = NSString["stringWithUTF8String:"];
9
- export function createNSString(str) {
10
- return _stringWithUTF8String(str);
11
- }
12
- // NSData helpers
13
- const NSData = foundation["NSData"];
14
- const _dataWithBytesLength = NSData["dataWithBytes:length:"];
15
- export function createNSData(buffer) {
16
- return _dataWithBytesLength(buffer, buffer.length);
17
- }
18
- // NSArray helpers
19
- const NSArray = foundation["NSArray"];
20
- const _arrayWithObject = NSArray["arrayWithObject:"];
21
- export function createNSArray(obj) {
22
- return _arrayWithObject(obj);
23
- }
@@ -1,28 +0,0 @@
1
- import { NobjcLibrary, NobjcObject } from "@iamevan/nobjc";
2
- import { allocInit, NobjcInstanceWrapper } from "./helpers.js";
3
- // Load the AuthenticationServices framework
4
- export const authServices = new NobjcLibrary("/System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices");
5
- // Wrapper for ASAuthorizationPlatformPublicKeyCredentialProvider
6
- const _ASAuthorizationPlatformPublicKeyCredentialProvider = authServices["ASAuthorizationPlatformPublicKeyCredentialProvider"];
7
- export class ASAuthorizationPlatformPublicKeyCredentialProvider extends NobjcInstanceWrapper {
8
- constructor(relyingPartyIdentifier) {
9
- const instance = allocInit(_ASAuthorizationPlatformPublicKeyCredentialProvider, "initWithRelyingPartyIdentifier:", relyingPartyIdentifier);
10
- super(instance);
11
- }
12
- createCredentialAssertionRequest(challenge) {
13
- const method = this.instance["createCredentialAssertionRequestWithChallenge:"];
14
- return method(challenge);
15
- }
16
- }
17
- // Wrapper for ASAuthorizationController
18
- const _ASAuthorizationController = authServices["ASAuthorizationController"];
19
- export class ASAuthorizationController extends NobjcInstanceWrapper {
20
- constructor(authorizationRequests) {
21
- const instance = allocInit(_ASAuthorizationController, "initWithAuthorizationRequests:", authorizationRequests);
22
- super(instance);
23
- }
24
- performRequests() {
25
- const method = this.instance["performRequests"];
26
- method();
27
- }
28
- }
@@ -1,142 +0,0 @@
1
- import { NSArray, NSData, NSString } from "./main";
2
- /**
3
- * Foundation Framework Helpers
4
- *
5
- * This module provides convenient helper functions for working with
6
- * Foundation framework objects in JavaScript/TypeScript.
7
- *
8
- * Key features:
9
- * - NSString: String conversion helpers
10
- * - NSData: Data conversion between Objective-C and JavaScript
11
- * - NSArray: Array creation and manipulation
12
- */
13
- /**
14
- * NSData to Buffer Conversion Methods
15
- *
16
- * Two methods are provided for converting NSData to JavaScript Buffers:
17
- *
18
- * 1. bufferFromNSData (base64): Uses base64 as an intermediate format.
19
- * - Most reliable and compatible
20
- * - Recommended for general use
21
- * - Slight overhead due to base64 encoding/decoding
22
- *
23
- * 2. bufferFromNSDataDirect (direct): Uses getBytes:length: for direct memory copy.
24
- * - More efficient for large data
25
- * - Direct memory access
26
- * - May have compatibility issues with some nobjc versions
27
- */
28
- /**
29
- * Convert NSData to a JavaScript Buffer using base64 encoding
30
- * This is the most reliable method for data conversion.
31
- * @param data The NSData object
32
- * @returns A Buffer containing the data
33
- */
34
- export function bufferFromNSData(data) {
35
- const nsData = data;
36
- const length = nsData.length();
37
- if (length === 0) {
38
- return Buffer.alloc(0);
39
- }
40
- // Use base64 encoding as a reliable bridge between NSData and JS Buffer
41
- const base64String = nsData.base64EncodedStringWithOptions$(0);
42
- const base64Str = base64String.UTF8String();
43
- return Buffer.from(base64Str, "base64");
44
- }
45
- /**
46
- * Convert NSData to a JavaScript Buffer using direct memory copy
47
- * This method uses getBytes:length: for direct memory access.
48
- * May be more efficient for large data, but requires proper buffer allocation.
49
- * @param data The NSData object
50
- * @returns A Buffer containing the data
51
- */
52
- export function bufferFromNSDataDirect(data) {
53
- const nsData = data;
54
- const length = nsData.length();
55
- if (length === 0) {
56
- return Buffer.alloc(0);
57
- }
58
- // Allocate a buffer and copy bytes directly
59
- const buffer = Buffer.alloc(length);
60
- nsData.getBytes$length$(buffer, length);
61
- return buffer;
62
- }
63
- /**
64
- * Convert NSData to a JavaScript Uint8Array
65
- * @param data The NSData object
66
- * @returns A Uint8Array containing the data
67
- */
68
- export function uint8ArrayFromNSData(data) {
69
- const buffer = bufferFromNSData(data);
70
- return new Uint8Array(buffer);
71
- }
72
- /**
73
- * Convert NSData to a base64 string
74
- * @param data The NSData object
75
- * @returns A base64-encoded string
76
- */
77
- export function base64FromNSData(data) {
78
- const nsData = data;
79
- const nsString = nsData.base64EncodedStringWithOptions$(0);
80
- return nsString.UTF8String();
81
- }
82
- /**
83
- * Create NSData from a base64 string
84
- * @param base64String The base64-encoded string
85
- * @returns An NSData object
86
- */
87
- export function NSDataFromBase64(base64String) {
88
- const nsString = NSString.stringWithUTF8String$(base64String);
89
- const nsData = NSData.alloc();
90
- return nsData.initWithBase64EncodedString$options$(nsString, 0);
91
- }
92
- /**
93
- * Get the length of NSData
94
- * @param data The NSData object
95
- * @returns The length in bytes
96
- */
97
- export function NSDataLength(data) {
98
- const nsData = data;
99
- return nsData.length();
100
- }
101
- /**
102
- * Create a copy of NSData
103
- * @param data The NSData object
104
- * @returns A new NSData object with copied data
105
- */
106
- export function NSDataCopy(data) {
107
- return NSData.dataWithData$(data);
108
- }
109
- /**
110
- * Compare two NSData objects for equality
111
- * @param data1 The first NSData object
112
- * @param data2 The second NSData object
113
- * @returns True if the data is equal
114
- */
115
- export function NSDataIsEqual(data1, data2) {
116
- const nsData1 = data1;
117
- return nsData1.isEqualToData$(data2);
118
- }
119
- /**
120
- * Extract a subrange of NSData
121
- * Note: This method may not work with all versions of nobjc due to NSRange struct limitations.
122
- * As an alternative, convert to Buffer, slice, and convert back.
123
- * @param data The NSData object
124
- * @param location The starting position
125
- * @param length The number of bytes to extract
126
- * @returns A new NSData object containing the subdata
127
- */
128
- export function NSDataSubdata(data, location, length) {
129
- // Workaround: Convert to buffer, slice, and convert back
130
- // This avoids the NSRange struct issue with nobjc
131
- const buffer = bufferFromNSData(data);
132
- const slicedBuffer = buffer.subarray(location, location + length);
133
- return NSDataFromBuffer(slicedBuffer);
134
- }
135
- // NSArray helpers
136
- export function NSArrayFromObjects(objects) {
137
- let array = NSArray.array();
138
- for (const obj of objects) {
139
- array = array.arrayByAddingObject$(obj);
140
- }
141
- return array;
142
- }
@@ -1,4 +0,0 @@
1
- import { NobjcLibrary, NobjcObject } from "@iamevan/nobjc";
2
- // Load the Foundation framework
3
- export const Foundation = new NobjcLibrary("/System/Library/Frameworks/Foundation.framework/Foundation");
4
- export const NSArray = Foundation.NSArray;
@@ -1,2 +0,0 @@
1
- import { Foundation } from ".";
2
- export const NSValue = Foundation.NSValue;
@@ -1,28 +0,0 @@
1
- import { NobjcLibrary, NobjcObject } from "@iamevan/nobjc";
2
- import { NobjcObjectWrapper } from "./helpers";
3
- // Load the Foundation framework
4
- export const foundation = new NobjcLibrary("/System/Library/Frameworks/Foundation.framework/Foundation");
5
- // NSString helpers
6
- const _NSString = foundation["NSString"];
7
- const _stringWithUTF8String = _NSString["stringWithUTF8String:"];
8
- export class NSString extends NobjcObjectWrapper {
9
- constructor(str) {
10
- super(_stringWithUTF8String(str));
11
- }
12
- }
13
- // NSData helpers
14
- const _NSData = foundation["NSData"];
15
- const _dataWithBytesLength = _NSData["dataWithBytes:length:"];
16
- export class NSData extends NobjcObjectWrapper {
17
- constructor(buffer) {
18
- super(_dataWithBytesLength(buffer, buffer.length));
19
- }
20
- }
21
- // NSArray helpers
22
- const _NSArray = foundation["NSArray"];
23
- const _arrayWithObject = _NSArray["arrayWithObject:"];
24
- export class NSArray extends NobjcObjectWrapper {
25
- constructor(obj) {
26
- super(_arrayWithObject(obj));
27
- }
28
- }
package/dist/window.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import { type NobjcObject } from "objc-js";
2
- declare function createEmptyWindow(): NobjcObject;
3
- declare function getNativeWindowHandle(window: NobjcObject): NobjcObject;
4
- export { createEmptyWindow, getNativeWindowHandle };
5
- //# sourceMappingURL=window.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../src/window.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAWxE,iBAAS,iBAAiB,IAAI,WAAW,CAmDxC;AAED,iBAAS,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAG/D;AAED,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC"}
package/dist/window.js DELETED
@@ -1,58 +0,0 @@
1
- import { NobjcLibrary, NobjcProtocol } from "objc-js";
2
- import { allocInitPlain } from "./objc/helpers.js";
3
- import { NSStringFromString } from "./objc/foundation/nsstring.js";
4
- const AppKit = new NobjcLibrary("/System/Library/Frameworks/AppKit.framework/AppKit");
5
- const Foundation = new NobjcLibrary("/System/Library/Frameworks/Foundation.framework/Foundation");
6
- function createEmptyWindow() {
7
- const NSApp = AppKit.NSApplication.sharedApplication();
8
- const window = allocInitPlain(AppKit.NSWindow);
9
- const styleMask = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3); // titled, closable, miniaturizable, resizable
10
- // Make the app active and show the window.
11
- window.setStyleMask$(styleMask);
12
- window.setFrameFromString$(NSStringFromString("{{100, 100}, {800, 600}}"));
13
- NSApp.setActivationPolicy$(0);
14
- NSApp.finishLaunching();
15
- NSApp.activateIgnoringOtherApps$(true);
16
- window.setIsVisible$(true);
17
- window.makeKeyWindow();
18
- window.orderFrontRegardless();
19
- const delegate = NobjcProtocol.implement("NSWindowDelegate", {
20
- windowShouldClose$: () => {
21
- NSApp.terminate$(NSApp);
22
- return true;
23
- },
24
- windowWillClose$: () => {
25
- NSApp.terminate$(NSApp);
26
- },
27
- });
28
- window.setDelegate$(delegate);
29
- const shutdown = () => {
30
- try {
31
- window.close();
32
- }
33
- finally {
34
- NSApp.stop$(NSApp);
35
- NSApp.terminate$(NSApp);
36
- }
37
- };
38
- const handleSignal = () => shutdown();
39
- process.once("exit", shutdown);
40
- process.once("SIGINT", handleSignal);
41
- process.once("SIGTERM", handleSignal);
42
- process.once("SIGQUIT", handleSignal);
43
- // Pump the AppKit run loop for a short tick to keep JS responsive.
44
- const runLoop = Foundation.NSRunLoop.currentRunLoop();
45
- const pump = () => {
46
- const untilDate = Foundation.NSDate.dateWithTimeIntervalSinceNow$(0.01);
47
- runLoop.runUntilDate$(untilDate);
48
- };
49
- const pumpId = setInterval(pump, 10);
50
- process.once("exit", () => clearInterval(pumpId));
51
- return window;
52
- }
53
- function getNativeWindowHandle(window) {
54
- // Electron expects an NSView* on macOS; contentView returns that NSView.
55
- return window.contentView();
56
- }
57
- export { createEmptyWindow, getNativeWindowHandle };
58
- //# sourceMappingURL=window.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"window.js","sourceRoot":"","sources":["../src/window.ts"],"names":[],"mappings":"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"}