@ecmaos/types 0.4.2 → 0.4.3

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.
@@ -1,5 +1,5 @@
1
1
 
2
2
 
3
- > @ecmaos/types@0.4.2 build /home/archmag0s/code/ecmaos/core/types
3
+ > @ecmaos/types@0.4.3 build /home/archmag0s/code/ecmaos/core/types
4
4
  > tsc
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ecmaos/types
2
2
 
3
+ ## 0.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 97b4dbf: implement passkey management and login
8
+
3
9
  ## 0.4.2
4
10
 
5
11
  ### Patch Changes
package/dist/users.d.ts CHANGED
@@ -50,6 +50,23 @@ export interface AddUserOptions {
50
50
  /** Skip writing to passwd file */
51
51
  noWrite?: boolean;
52
52
  }
53
+ /**
54
+ * Interface representing a passkey credential
55
+ */
56
+ export interface Passkey {
57
+ /** Unique identifier for this passkey */
58
+ id: string;
59
+ /** Base64-encoded credential ID from WebAuthn */
60
+ credentialId: string;
61
+ /** Public key data (COSE format) */
62
+ publicKey: ArrayBuffer | Uint8Array;
63
+ /** Timestamp when passkey was created */
64
+ createdAt: number;
65
+ /** Timestamp when passkey was last used (optional) */
66
+ lastUsed?: number;
67
+ /** User-friendly name/description (optional) */
68
+ name?: string;
69
+ }
53
70
  /**
54
71
  * Interface for user management functionality
55
72
  */
@@ -74,9 +91,11 @@ export interface Users {
74
91
  /**
75
92
  * Login with credentials
76
93
  * @param username - Username
77
- * @param password - Password
94
+ * @param password - Password (optional if using passkey)
95
+ * @param passkeyCredential - Passkey credential (optional if using password)
78
96
  */
79
- login(username: string, password: string): Promise<{
97
+ login(username: string, password?: string, passkeyCredential?: PublicKeyCredential): Promise<{
98
+ user: User;
80
99
  cred: {
81
100
  uid: number;
82
101
  gid: number;
@@ -99,5 +118,33 @@ export interface Users {
99
118
  * @param updates - User properties to update
100
119
  */
101
120
  update(uid: UID, updates: Partial<User>): Promise<void>;
121
+ /**
122
+ * Get all passkeys for a user
123
+ * @param uid - User ID
124
+ */
125
+ getPasskeys(uid: UID): Promise<Passkey[]>;
126
+ /**
127
+ * Save passkeys for a user
128
+ * @param uid - User ID
129
+ * @param passkeys - Array of passkeys to save
130
+ */
131
+ savePasskeys(uid: UID, passkeys: Passkey[]): Promise<void>;
132
+ /**
133
+ * Add a passkey to a user's collection
134
+ * @param uid - User ID
135
+ * @param passkey - Passkey to add
136
+ */
137
+ addPasskey(uid: UID, passkey: Passkey): Promise<void>;
138
+ /**
139
+ * Remove a passkey by ID
140
+ * @param uid - User ID
141
+ * @param passkeyId - Passkey ID to remove
142
+ */
143
+ removePasskey(uid: UID, passkeyId: string): Promise<void>;
144
+ /**
145
+ * Check if a user has any registered passkeys
146
+ * @param uid - User ID
147
+ */
148
+ hasPasskeys(uid: UID): Promise<boolean>;
102
149
  }
103
150
  //# sourceMappingURL=users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,mBAAmB;AACnB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AAExB,oBAAoB;AACpB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AAExB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe;IACf,GAAG,EAAE,MAAM,CAAA;IACX,wBAAwB;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc;IACd,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;QAChC,iBAAiB;QACjB,SAAS,EAAE,UAAU,CAAA;KACtB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAE5B;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;IAE/B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAErB;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;IAE1F;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/B;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../users.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecmaos/types",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "Type definitions for ecmaOS",
5
5
  "author": "Jay Mathis",
6
6
  "license": "MIT+Apache-2.0",
package/users.ts CHANGED
@@ -57,6 +57,24 @@ export interface AddUserOptions {
57
57
  noWrite?: boolean
58
58
  }
59
59
 
60
+ /**
61
+ * Interface representing a passkey credential
62
+ */
63
+ export interface Passkey {
64
+ /** Unique identifier for this passkey */
65
+ id: string
66
+ /** Base64-encoded credential ID from WebAuthn */
67
+ credentialId: string
68
+ /** Public key data (COSE format) */
69
+ publicKey: ArrayBuffer | Uint8Array
70
+ /** Timestamp when passkey was created */
71
+ createdAt: number
72
+ /** Timestamp when passkey was last used (optional) */
73
+ lastUsed?: number
74
+ /** User-friendly name/description (optional) */
75
+ name?: string
76
+ }
77
+
60
78
  /**
61
79
  * Interface for user management functionality
62
80
  */
@@ -85,9 +103,10 @@ export interface Users {
85
103
  /**
86
104
  * Login with credentials
87
105
  * @param username - Username
88
- * @param password - Password
106
+ * @param password - Password (optional if using passkey)
107
+ * @param passkeyCredential - Passkey credential (optional if using password)
89
108
  */
90
- login(username: string, password: string): Promise<{ cred: { uid: number, gid: number } }>
109
+ login(username: string, password?: string, passkeyCredential?: PublicKeyCredential): Promise<{ user: User, cred: { uid: number, gid: number } }>
91
110
 
92
111
  /**
93
112
  * Change a user's password
@@ -108,4 +127,37 @@ export interface Users {
108
127
  * @param updates - User properties to update
109
128
  */
110
129
  update(uid: UID, updates: Partial<User>): Promise<void>
130
+
131
+ /**
132
+ * Get all passkeys for a user
133
+ * @param uid - User ID
134
+ */
135
+ getPasskeys(uid: UID): Promise<Passkey[]>
136
+
137
+ /**
138
+ * Save passkeys for a user
139
+ * @param uid - User ID
140
+ * @param passkeys - Array of passkeys to save
141
+ */
142
+ savePasskeys(uid: UID, passkeys: Passkey[]): Promise<void>
143
+
144
+ /**
145
+ * Add a passkey to a user's collection
146
+ * @param uid - User ID
147
+ * @param passkey - Passkey to add
148
+ */
149
+ addPasskey(uid: UID, passkey: Passkey): Promise<void>
150
+
151
+ /**
152
+ * Remove a passkey by ID
153
+ * @param uid - User ID
154
+ * @param passkeyId - Passkey ID to remove
155
+ */
156
+ removePasskey(uid: UID, passkeyId: string): Promise<void>
157
+
158
+ /**
159
+ * Check if a user has any registered passkeys
160
+ * @param uid - User ID
161
+ */
162
+ hasPasskeys(uid: UID): Promise<boolean>
111
163
  }