@fatagnus/dink-convex 2.6.0 → 2.8.0
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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/keys.d.ts +123 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +189 -0
- package/dist/keys.js.map +1 -0
- package/package.json +2 -6
package/dist/index.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export { syncTriggers, registerSyncedTable, isSyncedTable, getSyncConfig, create
|
|
|
66
66
|
export { callEdge, scatterCall, discoverEdges, getEdgeRpcConfig, buildCallEdgeUrl, buildScatterCallUrl, buildDiscoverEdgesUrl, buildCallEdgePayload, buildScatterCallPayload, parseCallEdgeResponse, parseScatterCallResponse, parseDiscoverEdgesResponse, EdgeRpcError, EDGE_RPC_ERROR_CODES, type CallEdgeOptions, type ScatterCallOptions, type DiscoverEdgesOptions, type CallEdgeResult, type ScatterCallResult, type ScatterCallResultItem, type EdgeInfo, type EdgeRpcConfig, } from "./edgeRpc.js";
|
|
67
67
|
export { registerReplicateComponent, hasReplicateComponent, getReplicateComponent, clearReplicateComponent, forwardToReplicate, type ReplicateComponent, type DeltaData, type ForwardContext, } from "./replicateBridge.js";
|
|
68
68
|
export { describeEdgeServices, getLLMContext, getIntrospectConfig, buildDescribeUrl, buildLLMContextUrl, parseDescribeResponse, parseLLMContextResponse, IntrospectError, INTROSPECT_ERROR_CODES, type ServiceDescriptor, type MethodDescriptor, type ServiceAIContext, type MethodAIContext, type IntrospectConfig, } from "./introspect.js";
|
|
69
|
+
export { createEdgeKey, listEdgeKeys, revokeEdgeKey, type KeyType, type KeyStatus, type KeyMetadata, type CreateEdgeKeyOptions, type CreateKeyResult, } from "./keys.js";
|
|
69
70
|
export declare const VERSION = "2.4.0";
|
|
70
71
|
export type { SyncedTableConfig } from "./schema.js";
|
|
71
72
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAGH,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,YAAY,GAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,6BAA6B,EAC7B,sCAAsC,EACtC,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mCAAmC,EACnC,kBAAkB,EAClB,8BAA8B,EAC9B,cAAc,EACd,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAGH,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,YAAY,GAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,6BAA6B,EAC7B,sCAAsC,EACtC,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mCAAmC,EACnC,kBAAkB,EAClB,8BAA8B,EAC9B,cAAc,EACd,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AAGnB,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -74,6 +74,8 @@ export { callEdge, scatterCall, discoverEdges, getEdgeRpcConfig, buildCallEdgeUr
|
|
|
74
74
|
export { registerReplicateComponent, hasReplicateComponent, getReplicateComponent, clearReplicateComponent, forwardToReplicate, } from "./replicateBridge.js";
|
|
75
75
|
// Introspection helpers
|
|
76
76
|
export { describeEdgeServices, getLLMContext, getIntrospectConfig, buildDescribeUrl, buildLLMContextUrl, parseDescribeResponse, parseLLMContextResponse, IntrospectError, INTROSPECT_ERROR_CODES, } from "./introspect.js";
|
|
77
|
+
// Key management helpers
|
|
78
|
+
export { createEdgeKey, listEdgeKeys, revokeEdgeKey, } from "./keys.js";
|
|
77
79
|
// Component version
|
|
78
80
|
export const VERSION = "2.4.0";
|
|
79
81
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAErB,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GAEpB,MAAM,WAAW,CAAC;AAEnB,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,GAOhB,MAAM,oBAAoB,CAAC;AAE5B,sEAAsE;AACtE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,gBAAgB,CAAC;AAE1E,+CAA+C;AAC/C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,6BAA6B,EAC7B,sCAAsC,EACtC,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mCAAmC,EACnC,kBAAkB,EAClB,8BAA8B,EAC9B,cAAc,GAEf,MAAM,eAAe,CAAC;AAEvB,2BAA2B;AAC3B,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,GASrB,MAAM,cAAc,CAAC;AAEtB,2BAA2B;AAC3B,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,GAInB,MAAM,sBAAsB,CAAC;AAE9B,wBAAwB;AACxB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,GAMvB,MAAM,iBAAiB,CAAC;AAEzB,oBAAoB;AACpB,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAErB,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GAEpB,MAAM,WAAW,CAAC;AAEnB,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,GAOhB,MAAM,oBAAoB,CAAC;AAE5B,sEAAsE;AACtE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,gBAAgB,CAAC;AAE1E,+CAA+C;AAC/C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,6BAA6B,EAC7B,sCAAsC,EACtC,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mCAAmC,EACnC,kBAAkB,EAClB,8BAA8B,EAC9B,cAAc,GAEf,MAAM,eAAe,CAAC;AAEvB,2BAA2B;AAC3B,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,GASrB,MAAM,cAAc,CAAC;AAEtB,2BAA2B;AAC3B,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,GAInB,MAAM,sBAAsB,CAAC;AAE9B,wBAAwB;AACxB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,GAMvB,MAAM,iBAAiB,CAAC;AAEzB,yBAAyB;AACzB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,GAMd,MAAM,WAAW,CAAC;AAEnB,oBAAoB;AACpB,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/dist/keys.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key Management Helpers for Convex
|
|
3
|
+
*
|
|
4
|
+
* These helpers allow Convex actions to manage API keys via dinkd.
|
|
5
|
+
* They follow the same pattern as edgeRpc.ts for authenticated HTTP calls.
|
|
6
|
+
*
|
|
7
|
+
* @module keys
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Action context type (minimal interface for fetch operations).
|
|
11
|
+
*/
|
|
12
|
+
interface ActionCtx {
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Type of API key
|
|
16
|
+
*/
|
|
17
|
+
export type KeyType = 'edge' | 'center' | 'client' | 'admin' | 'app_master' | 'sync_key';
|
|
18
|
+
/**
|
|
19
|
+
* Status of an API key
|
|
20
|
+
*/
|
|
21
|
+
export type KeyStatus = 'active' | 'expired' | 'revoked' | 'disabled';
|
|
22
|
+
/**
|
|
23
|
+
* Metadata about an API key
|
|
24
|
+
*/
|
|
25
|
+
export interface KeyMetadata {
|
|
26
|
+
/** Unique key identifier */
|
|
27
|
+
id: string;
|
|
28
|
+
/** App ID this key belongs to */
|
|
29
|
+
appId: string;
|
|
30
|
+
/** Display name of the key */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Type of the key */
|
|
33
|
+
type: KeyType;
|
|
34
|
+
/** Edge ID (for edge keys) */
|
|
35
|
+
edgeId?: string;
|
|
36
|
+
/** Scopes granted to this key */
|
|
37
|
+
scopes: string[];
|
|
38
|
+
/** Labels attached to the key */
|
|
39
|
+
labels?: Record<string, string>;
|
|
40
|
+
/** Current status of the key */
|
|
41
|
+
status: KeyStatus;
|
|
42
|
+
/** When the key was created (ISO string) */
|
|
43
|
+
createdAt: string;
|
|
44
|
+
/** When the key expires (ISO string, if set) */
|
|
45
|
+
expiresAt?: string;
|
|
46
|
+
/** When the key was last used (ISO string) */
|
|
47
|
+
lastUsedAt?: string;
|
|
48
|
+
/** When the key was revoked (ISO string, if revoked) */
|
|
49
|
+
revokedAt?: string;
|
|
50
|
+
/** Reason for revocation (if revoked) */
|
|
51
|
+
revokeReason?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Options for creating an edge key
|
|
55
|
+
*/
|
|
56
|
+
export interface CreateEdgeKeyOptions {
|
|
57
|
+
/** Display name for the key */
|
|
58
|
+
name: string;
|
|
59
|
+
/** Edge ID (optional, auto-generated if not provided) */
|
|
60
|
+
edgeId?: string;
|
|
61
|
+
/** Labels to attach to the key */
|
|
62
|
+
labels?: Record<string, string>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Result from creating an API key
|
|
66
|
+
*/
|
|
67
|
+
export interface CreateKeyResult {
|
|
68
|
+
/** Key metadata */
|
|
69
|
+
key: KeyMetadata;
|
|
70
|
+
/** The actual API key (only shown once!) */
|
|
71
|
+
apiKey: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create a new edge key.
|
|
75
|
+
*
|
|
76
|
+
* @param _ctx - Convex action context
|
|
77
|
+
* @param options - Edge key creation options
|
|
78
|
+
* @returns Created key metadata and API key string
|
|
79
|
+
* @throws EdgeRpcError if configuration is missing or request fails
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const result = await createEdgeKey(ctx, {
|
|
84
|
+
* name: 'my-edge-agent',
|
|
85
|
+
* });
|
|
86
|
+
* // IMPORTANT: Save the API key - it won't be shown again!
|
|
87
|
+
* console.log('API Key:', result.apiKey);
|
|
88
|
+
* console.log('Edge ID:', result.key.edgeId);
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function createEdgeKey(_ctx: ActionCtx, options: CreateEdgeKeyOptions): Promise<CreateKeyResult>;
|
|
92
|
+
/**
|
|
93
|
+
* List edge keys.
|
|
94
|
+
*
|
|
95
|
+
* @param _ctx - Convex action context
|
|
96
|
+
* @returns Array of edge key metadata
|
|
97
|
+
* @throws EdgeRpcError if configuration is missing or request fails
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const keys = await listEdgeKeys(ctx);
|
|
102
|
+
* for (const key of keys) {
|
|
103
|
+
* console.log(`${key.name}: ${key.status}`);
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function listEdgeKeys(_ctx: ActionCtx): Promise<KeyMetadata[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Revoke an edge key.
|
|
110
|
+
*
|
|
111
|
+
* @param _ctx - Convex action context
|
|
112
|
+
* @param keyId - The key ID to revoke
|
|
113
|
+
* @param reason - Optional reason for revocation
|
|
114
|
+
* @throws EdgeRpcError if configuration is missing or request fails
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* await revokeEdgeKey(ctx, 'key-123', 'Agent decommissioned');
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export declare function revokeEdgeKey(_ctx: ActionCtx, keyId: string, reason?: string): Promise<void>;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH;;GAEG;AACH,UAAU,SAAS;CAElB;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;AAEzF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAgED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAuD1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAyCxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
package/dist/keys.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key Management Helpers for Convex
|
|
3
|
+
*
|
|
4
|
+
* These helpers allow Convex actions to manage API keys via dinkd.
|
|
5
|
+
* They follow the same pattern as edgeRpc.ts for authenticated HTTP calls.
|
|
6
|
+
*
|
|
7
|
+
* @module keys
|
|
8
|
+
*/
|
|
9
|
+
import { getEdgeRpcConfig, EdgeRpcError, EDGE_RPC_ERROR_CODES } from "./edgeRpc.js";
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// URL builders
|
|
12
|
+
// ============================================================================
|
|
13
|
+
function buildKeysUrl(baseUrl, endpoint) {
|
|
14
|
+
const url = new URL(`/api/keys/${endpoint}`, baseUrl);
|
|
15
|
+
return url.toString();
|
|
16
|
+
}
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Configuration validation
|
|
19
|
+
// ============================================================================
|
|
20
|
+
function validateConfig() {
|
|
21
|
+
const config = getEdgeRpcConfig();
|
|
22
|
+
if (!config.dinkUrl) {
|
|
23
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.MISSING_CONFIG, "DINK_URL environment variable is not configured");
|
|
24
|
+
}
|
|
25
|
+
if (!config.appSyncKey) {
|
|
26
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.MISSING_CONFIG, "DINK_APP_SYNC_KEY environment variable is not configured");
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
dinkUrl: config.dinkUrl,
|
|
30
|
+
appSyncKey: config.appSyncKey,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Response parsing
|
|
35
|
+
// ============================================================================
|
|
36
|
+
function parseKeyMetadata(raw) {
|
|
37
|
+
return {
|
|
38
|
+
id: raw.id,
|
|
39
|
+
appId: raw.app_id || '',
|
|
40
|
+
name: raw.name,
|
|
41
|
+
type: raw.type,
|
|
42
|
+
edgeId: raw.edge_id,
|
|
43
|
+
scopes: raw.scopes || [],
|
|
44
|
+
labels: raw.labels,
|
|
45
|
+
status: raw.status,
|
|
46
|
+
createdAt: raw.created_at,
|
|
47
|
+
expiresAt: raw.expires_at,
|
|
48
|
+
lastUsedAt: raw.last_used_at,
|
|
49
|
+
revokedAt: raw.revoked_at,
|
|
50
|
+
revokeReason: raw.revoke_reason,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Main helper functions
|
|
55
|
+
// ============================================================================
|
|
56
|
+
/**
|
|
57
|
+
* Create a new edge key.
|
|
58
|
+
*
|
|
59
|
+
* @param _ctx - Convex action context
|
|
60
|
+
* @param options - Edge key creation options
|
|
61
|
+
* @returns Created key metadata and API key string
|
|
62
|
+
* @throws EdgeRpcError if configuration is missing or request fails
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const result = await createEdgeKey(ctx, {
|
|
67
|
+
* name: 'my-edge-agent',
|
|
68
|
+
* });
|
|
69
|
+
* // IMPORTANT: Save the API key - it won't be shown again!
|
|
70
|
+
* console.log('API Key:', result.apiKey);
|
|
71
|
+
* console.log('Edge ID:', result.key.edgeId);
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export async function createEdgeKey(_ctx, options) {
|
|
75
|
+
const config = validateConfig();
|
|
76
|
+
const payload = {
|
|
77
|
+
name: options.name,
|
|
78
|
+
type: 'edge',
|
|
79
|
+
edge_id: options.edgeId || '',
|
|
80
|
+
scopes: ['edge:connect', 'services:register', 'services:expose'],
|
|
81
|
+
scope_bundle: 'bundle:edge',
|
|
82
|
+
labels: options.labels || {},
|
|
83
|
+
};
|
|
84
|
+
const url = buildKeysUrl(config.dinkUrl, 'create');
|
|
85
|
+
const response = await fetch(url, {
|
|
86
|
+
method: "POST",
|
|
87
|
+
headers: {
|
|
88
|
+
"Content-Type": "application/json",
|
|
89
|
+
Authorization: `Bearer ${config.appSyncKey}`,
|
|
90
|
+
},
|
|
91
|
+
body: JSON.stringify(payload),
|
|
92
|
+
});
|
|
93
|
+
if (response.status === 401) {
|
|
94
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.UNAUTHORIZED, "Invalid authorization token - ensure DINK_APP_SYNC_KEY has keys:manage scope");
|
|
95
|
+
}
|
|
96
|
+
if (!response.ok) {
|
|
97
|
+
const errorText = await response.text().catch(() => "");
|
|
98
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.SERVER_ERROR, `Failed to create key: ${response.status} ${response.statusText} - ${errorText}`);
|
|
99
|
+
}
|
|
100
|
+
const json = await response.json();
|
|
101
|
+
if (!json.success || !json.data) {
|
|
102
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.SERVER_ERROR, json.error || "Failed to create key");
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
key: parseKeyMetadata(json.data.key),
|
|
106
|
+
apiKey: json.data.api_key,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* List edge keys.
|
|
111
|
+
*
|
|
112
|
+
* @param _ctx - Convex action context
|
|
113
|
+
* @returns Array of edge key metadata
|
|
114
|
+
* @throws EdgeRpcError if configuration is missing or request fails
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const keys = await listEdgeKeys(ctx);
|
|
119
|
+
* for (const key of keys) {
|
|
120
|
+
* console.log(`${key.name}: ${key.status}`);
|
|
121
|
+
* }
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export async function listEdgeKeys(_ctx) {
|
|
125
|
+
const config = validateConfig();
|
|
126
|
+
const url = buildKeysUrl(config.dinkUrl, 'list') + '?type=edge';
|
|
127
|
+
const response = await fetch(url, {
|
|
128
|
+
method: "GET",
|
|
129
|
+
headers: {
|
|
130
|
+
Authorization: `Bearer ${config.appSyncKey}`,
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
if (response.status === 401) {
|
|
134
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.UNAUTHORIZED, "Invalid authorization token");
|
|
135
|
+
}
|
|
136
|
+
if (!response.ok) {
|
|
137
|
+
const errorText = await response.text().catch(() => "");
|
|
138
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.SERVER_ERROR, `Failed to list keys: ${response.status} ${response.statusText} - ${errorText}`);
|
|
139
|
+
}
|
|
140
|
+
const json = await response.json();
|
|
141
|
+
if (!json.success || !json.data) {
|
|
142
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.SERVER_ERROR, json.error || "Failed to list keys");
|
|
143
|
+
}
|
|
144
|
+
return (json.data.keys || []).map(parseKeyMetadata);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Revoke an edge key.
|
|
148
|
+
*
|
|
149
|
+
* @param _ctx - Convex action context
|
|
150
|
+
* @param keyId - The key ID to revoke
|
|
151
|
+
* @param reason - Optional reason for revocation
|
|
152
|
+
* @throws EdgeRpcError if configuration is missing or request fails
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* await revokeEdgeKey(ctx, 'key-123', 'Agent decommissioned');
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export async function revokeEdgeKey(_ctx, keyId, reason) {
|
|
160
|
+
const config = validateConfig();
|
|
161
|
+
const payload = {
|
|
162
|
+
key_id: keyId,
|
|
163
|
+
reason: reason || '',
|
|
164
|
+
};
|
|
165
|
+
const url = buildKeysUrl(config.dinkUrl, 'revoke');
|
|
166
|
+
const response = await fetch(url, {
|
|
167
|
+
method: "POST",
|
|
168
|
+
headers: {
|
|
169
|
+
"Content-Type": "application/json",
|
|
170
|
+
Authorization: `Bearer ${config.appSyncKey}`,
|
|
171
|
+
},
|
|
172
|
+
body: JSON.stringify(payload),
|
|
173
|
+
});
|
|
174
|
+
if (response.status === 401) {
|
|
175
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.UNAUTHORIZED, "Invalid authorization token");
|
|
176
|
+
}
|
|
177
|
+
if (response.status === 404) {
|
|
178
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.EDGE_NOT_FOUND, `Key not found: ${keyId}`);
|
|
179
|
+
}
|
|
180
|
+
if (!response.ok) {
|
|
181
|
+
const errorText = await response.text().catch(() => "");
|
|
182
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.SERVER_ERROR, `Failed to revoke key: ${response.status} ${response.statusText} - ${errorText}`);
|
|
183
|
+
}
|
|
184
|
+
const json = await response.json();
|
|
185
|
+
if (!json.success) {
|
|
186
|
+
throw new EdgeRpcError(EDGE_RPC_ERROR_CODES.SERVER_ERROR, json.error || "Failed to revoke key");
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=keys.js.map
|
package/dist/keys.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA6EpF,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,SAAS,YAAY,CAAC,OAAe,EAAE,QAAgB;IACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,cAAc,EACnC,iDAAiD,CAClD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,cAAc,EACnC,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,SAAS,gBAAgB,CAAC,GAA4B;IACpD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,KAAK,EAAG,GAAG,CAAC,MAAiB,IAAI,EAAE;QACnC,IAAI,EAAE,GAAG,CAAC,IAAc;QACxB,IAAI,EAAE,GAAG,CAAC,IAAe;QACzB,MAAM,EAAE,GAAG,CAAC,OAA6B;QACzC,MAAM,EAAG,GAAG,CAAC,MAAmB,IAAI,EAAE;QACtC,MAAM,EAAE,GAAG,CAAC,MAA4C;QACxD,MAAM,EAAE,GAAG,CAAC,MAAmB;QAC/B,SAAS,EAAE,GAAG,CAAC,UAAoB;QACnC,SAAS,EAAE,GAAG,CAAC,UAAgC;QAC/C,UAAU,EAAE,GAAG,CAAC,YAAkC;QAClD,SAAS,EAAE,GAAG,CAAC,UAAgC;QAC/C,YAAY,EAAE,GAAG,CAAC,aAAmC;KACtD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAe,EACf,OAA6B;IAE7B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;QAC7B,MAAM,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;QAChE,YAAY,EAAE,aAAa;QAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;KAC7B,CAAC;IAEF,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,MAAM,CAAC,UAAU,EAAE;SAC7C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAI/B,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,IAAI,CAAC,KAAK,IAAI,sBAAsB,CACrC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAe;IAEf,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC;IAEhE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,UAAU,EAAE;SAC7C;KACF,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,6BAA6B,CAC9B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAI/B,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,IAAI,CAAC,KAAK,IAAI,qBAAqB,CACpC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAe,EACf,KAAa,EACb,MAAe;IAEf,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,MAAM,IAAI,EAAE;KACrB,CAAC;IAEF,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,MAAM,CAAC,UAAU,EAAE;SAC7C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,6BAA6B,CAC9B,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,cAAc,EACnC,kBAAkB,KAAK,EAAE,CAC1B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAG/B,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,YAAY,CACpB,oBAAoB,CAAC,YAAY,EACjC,IAAI,CAAC,KAAK,IAAI,sBAAsB,CACrC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fatagnus/dink-convex",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "Dink Convex sync component - bidirectional sync between Convex and edge devices",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -90,11 +90,7 @@
|
|
|
90
90
|
"convex": "^1.17.0",
|
|
91
91
|
"convex-helpers": "^0.1.0"
|
|
92
92
|
},
|
|
93
|
-
|
|
94
|
-
"convex-helpers": {
|
|
95
|
-
"optional": true
|
|
96
|
-
}
|
|
97
|
-
},
|
|
93
|
+
|
|
98
94
|
"engines": {
|
|
99
95
|
"node": ">=18.0.0"
|
|
100
96
|
},
|