@ic-reactor/core 3.3.1 → 3.5.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.
@@ -0,0 +1,14 @@
1
+ import type { IdentityAttributeOpenIdProvider, IdentityAttributeValues, SignedIdentityAttributes } from "./types/client";
2
+ export declare const IDENTITY_ATTRIBUTES_BETA_PROVIDER = "https://beta.id.ai/authorize";
3
+ export declare function identityAttributeKeys({ openIdProvider, keys, }: {
4
+ openIdProvider: IdentityAttributeOpenIdProvider;
5
+ keys: string[];
6
+ }): string[];
7
+ export declare function normalizeOpenIdProvider(openIdProvider: IdentityAttributeOpenIdProvider): string;
8
+ export declare function resolveIdentityAttributeKeys({ openIdProvider, keys, }: {
9
+ openIdProvider: IdentityAttributeOpenIdProvider;
10
+ keys: string[];
11
+ }): Promise<string[]>;
12
+ export declare function decodeIdentityAttributeValues(data: Uint8Array, requestedKeys: string[]): IdentityAttributeValues;
13
+ export declare function normalizeSignedIdentityAttributes(attributes: SignedIdentityAttributes): SignedIdentityAttributes;
14
+ //# sourceMappingURL=identity-attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-attributes.d.ts","sourceRoot":"","sources":["../src/identity-attributes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,gBAAgB,CAAA;AAEvB,eAAO,MAAM,iCAAiC,iCAAiC,CAAA;AAQ/E,wBAAgB,qBAAqB,CAAC,EACpC,cAAc,EACd,IAAI,GACL,EAAE;IACD,cAAc,EAAE,+BAA+B,CAAA;IAC/C,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,GAAG,MAAM,EAAE,CAGX;AAED,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,+BAA+B,GAC9C,MAAM,CAMR;AAED,wBAAsB,4BAA4B,CAAC,EACjD,cAAc,EACd,IAAI,GACL,EAAE;IACD,cAAc,EAAE,+BAA+B,CAAA;IAC/C,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEpB;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EAAE,GACtB,uBAAuB,CAgBzB;AAsLD,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,wBAAwB,GACnC,wBAAwB,CAK1B"}
@@ -0,0 +1,161 @@
1
+ import { IDL } from "@icp-sdk/core/candid";
2
+ export const IDENTITY_ATTRIBUTES_BETA_PROVIDER = "https://beta.id.ai/authorize";
3
+ const OPEN_ID_PROVIDER_URLS = {
4
+ apple: "https://appleid.apple.com",
5
+ google: "https://accounts.google.com",
6
+ microsoft: "https://login.microsoftonline.com/{tid}/v2.0",
7
+ };
8
+ export function identityAttributeKeys({ openIdProvider, keys, }) {
9
+ const provider = normalizeOpenIdProvider(openIdProvider);
10
+ return keys.map((key) => `openid:${provider}:${key}`);
11
+ }
12
+ export function normalizeOpenIdProvider(openIdProvider) {
13
+ return (OPEN_ID_PROVIDER_URLS[openIdProvider] ?? openIdProvider);
14
+ }
15
+ export async function resolveIdentityAttributeKeys({ openIdProvider, keys, }) {
16
+ return identityAttributeKeys({ openIdProvider, keys });
17
+ }
18
+ export function decodeIdentityAttributeValues(data, requestedKeys) {
19
+ const requestedKeyMap = requestedKeys.reduce((acc, key) => {
20
+ acc[key] = identityAttributeDisplayKey(key);
21
+ acc[identityAttributeDisplayKey(key)] = identityAttributeDisplayKey(key);
22
+ return acc;
23
+ }, {});
24
+ const decodedValues = decodeCandidAttributeValues(data, requestedKeyMap);
25
+ if (Object.keys(decodedValues).length > 0) {
26
+ return decodedValues;
27
+ }
28
+ return extractPrintableAttributeValues(data, requestedKeys);
29
+ }
30
+ function decodeCandidAttributeValues(data, requestedKeyMap) {
31
+ const textPairs = IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text));
32
+ const recordPairs = IDL.Vec(IDL.Record({
33
+ key: IDL.Text,
34
+ value: IDL.Text,
35
+ }));
36
+ const candidates = [
37
+ [textPairs],
38
+ [recordPairs],
39
+ [IDL.Record({ attributes: textPairs })],
40
+ [IDL.Record({ values: textPairs })],
41
+ [IDL.Record({ attributes: recordPairs })],
42
+ [IDL.Record({ values: recordPairs })],
43
+ ];
44
+ for (const candidate of candidates) {
45
+ try {
46
+ const decoded = IDL.decode(candidate, data);
47
+ const values = collectDecodedAttributeValues(decoded, requestedKeyMap);
48
+ if (Object.keys(values).length > 0) {
49
+ return values;
50
+ }
51
+ }
52
+ catch {
53
+ // Try the next known beta payload shape, then fall back to text extraction.
54
+ }
55
+ }
56
+ return {};
57
+ }
58
+ function collectDecodedAttributeValues(value, requestedKeyMap, activeKey) {
59
+ const values = {};
60
+ if (typeof value === "string") {
61
+ const displayKey = requestedKeyMap[value];
62
+ if (displayKey) {
63
+ return values;
64
+ }
65
+ if (activeKey && isPrintableTextValue(value)) {
66
+ values[activeKey] = value;
67
+ }
68
+ return values;
69
+ }
70
+ if (Array.isArray(value)) {
71
+ if (value.length === 2 && typeof value[0] === "string") {
72
+ const displayKey = requestedKeyMap[value[0]];
73
+ if (displayKey &&
74
+ typeof value[1] === "string" &&
75
+ isPrintableTextValue(value[1])) {
76
+ values[displayKey] = value[1];
77
+ return values;
78
+ }
79
+ }
80
+ for (const item of value) {
81
+ Object.assign(values, collectDecodedAttributeValues(item, requestedKeyMap, activeKey));
82
+ }
83
+ return values;
84
+ }
85
+ if (value && typeof value === "object") {
86
+ const record = value;
87
+ if (typeof record.key === "string" && typeof record.value === "string") {
88
+ const displayKey = requestedKeyMap[record.key];
89
+ if (displayKey && isPrintableTextValue(record.value)) {
90
+ values[displayKey] = record.value;
91
+ return values;
92
+ }
93
+ }
94
+ for (const [key, nested] of Object.entries(record)) {
95
+ const displayKey = requestedKeyMap[key] ?? activeKey;
96
+ if (displayKey &&
97
+ typeof nested === "string" &&
98
+ isPrintableTextValue(nested)) {
99
+ values[displayKey] = nested;
100
+ continue;
101
+ }
102
+ Object.assign(values, collectDecodedAttributeValues(nested, requestedKeyMap, displayKey));
103
+ }
104
+ }
105
+ return values;
106
+ }
107
+ function extractPrintableAttributeValues(data, requestedKeys) {
108
+ const text = new TextDecoder().decode(data);
109
+ const values = {};
110
+ for (const requestedKey of requestedKeys) {
111
+ const start = text.indexOf(requestedKey);
112
+ if (start === -1) {
113
+ continue;
114
+ }
115
+ const tail = text.slice(start + requestedKey.length);
116
+ const printableRuns = tail.match(/[\x20-\x7E]{2,512}/g) ?? [];
117
+ const value = printableRuns
118
+ .map((candidate) => cleanPrintableAttributeValue(candidate, requestedKeys))
119
+ .find((candidate) => isPrintableTextValue(candidate) &&
120
+ candidate !== requestedKey &&
121
+ !candidate.startsWith("openid:"));
122
+ if (value) {
123
+ values[identityAttributeDisplayKey(requestedKey)] = value.trim();
124
+ }
125
+ }
126
+ return values;
127
+ }
128
+ function cleanPrintableAttributeValue(value, requestedKeys) {
129
+ let cleaned = value;
130
+ for (const requestedKey of requestedKeys) {
131
+ const nextKeyIndex = cleaned.indexOf(requestedKey);
132
+ if (nextKeyIndex > 0) {
133
+ cleaned = cleaned.slice(0, trimCandidTextLengthPrefix(cleaned, nextKeyIndex));
134
+ }
135
+ }
136
+ const nextOpenIdKeyMatch = /\d*openid:/.exec(cleaned);
137
+ if (nextOpenIdKeyMatch?.index && nextOpenIdKeyMatch.index > 0) {
138
+ cleaned = cleaned.slice(0, nextOpenIdKeyMatch.index);
139
+ }
140
+ return cleaned.trim();
141
+ }
142
+ function trimCandidTextLengthPrefix(value, index) {
143
+ let trimmedIndex = index;
144
+ while (trimmedIndex > 0 && /\d/.test(value[trimmedIndex - 1])) {
145
+ trimmedIndex -= 1;
146
+ }
147
+ return trimmedIndex;
148
+ }
149
+ function identityAttributeDisplayKey(key) {
150
+ return key.split(":").pop() || key;
151
+ }
152
+ function isPrintableTextValue(value) {
153
+ return value.length > 0 && value.length <= 512 && /^[\x20-\x7E]+$/.test(value);
154
+ }
155
+ export function normalizeSignedIdentityAttributes(attributes) {
156
+ return {
157
+ data: new Uint8Array(attributes.data),
158
+ signature: new Uint8Array(attributes.signature),
159
+ };
160
+ }
161
+ //# sourceMappingURL=identity-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-attributes.js","sourceRoot":"","sources":["../src/identity-attributes.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./reactor";
2
2
  export * from "./client";
3
3
  export * from "./utils";
4
+ export * from "./identity-attributes";
4
5
  export * from "./display";
5
6
  export * from "./display-reactor";
6
7
  export * from "./types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./reactor";
2
2
  export * from "./client";
3
3
  export * from "./utils";
4
+ export * from "./identity-attributes";
4
5
  export * from "./display";
5
6
  export * from "./display-reactor";
6
7
  export * from "./types";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { HttpAgent, HttpAgentOptions, Identity } from "@icp-sdk/core/agent";
2
- import type { AuthClient } from "@icp-sdk/auth/client";
2
+ import type { Principal } from "@icp-sdk/core/principal";
3
3
  import type { QueryClient } from "@tanstack/query-core";
4
4
  /**
5
5
  * Parameters for configuring a ClientManager instance.
@@ -10,6 +10,71 @@ import type { QueryClient } from "@tanstack/query-core";
10
10
  * @property {boolean} [withLocalEnv] - If true, configures the agent for a local environment.
11
11
  * @property {boolean} [withProcessEnv] - If true, auto-configures the agent based on process.env settings.
12
12
  */
13
+ export interface SignedIdentityAttributes {
14
+ data: Uint8Array;
15
+ signature: Uint8Array;
16
+ }
17
+ export interface IdentityAttributeRequest {
18
+ keys: string[];
19
+ nonce: Uint8Array;
20
+ }
21
+ export interface IdentityAttributeValues {
22
+ email?: string;
23
+ name?: string;
24
+ verified_email?: string;
25
+ [key: string]: string | undefined;
26
+ }
27
+ export interface IdentityAttributeResult {
28
+ principal: string;
29
+ requestedKeys: string[];
30
+ signedAttributes: SignedIdentityAttributes;
31
+ decodedAttributes: IdentityAttributeValues;
32
+ completedAt: string;
33
+ }
34
+ type IdentityAttributeOpenIdProviderAlias = "google" | "apple" | "microsoft";
35
+ export type IdentityAttributeOpenIdProvider = IdentityAttributeOpenIdProviderAlias | (string & {});
36
+ export interface ClientManagerAuthClientOptions {
37
+ identityProvider?: string | URL;
38
+ windowOpenerFeatures?: string;
39
+ openIdProvider?: IdentityAttributeOpenIdProvider;
40
+ }
41
+ export interface AuthClientSignInOptions {
42
+ maxTimeToLive?: bigint;
43
+ targets?: Principal[];
44
+ }
45
+ export interface ClientManagerSignInOptions extends AuthClientSignInOptions, ClientManagerAuthClientOptions {
46
+ onSuccess?: () => void | Promise<void>;
47
+ onError?: (error?: string) => void | Promise<void>;
48
+ }
49
+ export interface RequestIdentityAttributesParameters {
50
+ keys: string[];
51
+ nonce: Uint8Array;
52
+ identityProvider?: string | URL;
53
+ openIdProvider?: IdentityAttributeOpenIdProvider;
54
+ windowOpenerFeatures?: string;
55
+ signIn?: boolean;
56
+ maxTimeToLive?: bigint;
57
+ targets?: Principal[];
58
+ }
59
+ export interface RequestOpenIdIdentityAttributesParameters {
60
+ nonce: Uint8Array;
61
+ openIdProvider: IdentityAttributeOpenIdProvider;
62
+ keys: string[];
63
+ identityProvider?: string | URL;
64
+ windowOpenerFeatures?: string;
65
+ signIn?: boolean;
66
+ maxTimeToLive?: bigint;
67
+ targets?: Principal[];
68
+ }
69
+ export interface AuthClientLike {
70
+ getIdentity(): Promise<Identity> | Identity;
71
+ isAuthenticated(): Promise<boolean> | boolean;
72
+ signIn(options?: AuthClientSignInOptions): Promise<Identity>;
73
+ logout(options?: {
74
+ returnTo?: string;
75
+ }): Promise<void>;
76
+ requestAttributes(params: IdentityAttributeRequest): Promise<SignedIdentityAttributes>;
77
+ }
13
78
  export interface ClientManagerParameters {
14
79
  /**
15
80
  * The TanStack QueryClient used for caching and state management.
@@ -38,7 +103,7 @@ export interface ClientManagerParameters {
38
103
  * This is useful for environments where dynamic imports are not supported or
39
104
  * when you want to share an AuthClient instance across multiple managers.
40
105
  */
41
- authClient?: AuthClient;
106
+ authClient?: AuthClientLike;
42
107
  /**
43
108
  * **EXPERIMENTAL** - If true, uses the canister environment from `@icp-sdk/core/agent/canister-env`
44
109
  * to automatically configure the agent host and root key based on the `ic_env` cookie.
@@ -97,4 +162,5 @@ export interface AuthState {
97
162
  export interface UpdateAgentParameters extends HttpAgentOptions {
98
163
  agent?: HttpAgent;
99
164
  }
165
+ export {};
100
166
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,SAAS,CAAA;IAExB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAE3B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAEzB;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAA;IAEzB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAA;IAExB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@ export declare const REMOTE_HOSTS: string[];
2
2
  export declare const LOCAL_HOSTS: string[];
3
3
  export declare const IC_HOST_NETWORK_URI = "https://ic0.app";
4
4
  export declare const LOCAL_HOST_NETWORK_URI = "http://127.0.0.1:4943";
5
- export declare const IC_INTERNET_IDENTITY_PROVIDER = "https://id.ai";
5
+ export declare const IC_INTERNET_IDENTITY_PROVIDER = "https://id.ai/authorize";
6
6
  export declare const LOCAL_INTERNET_IDENTITY_PROVIDER = "http://rdmx6-jaaaa-aaaaa-aaadq-cai.localhost:4943";
7
7
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,UAAgC,CAAA;AAEzD,eAAO,MAAM,WAAW,UAA6B,CAAA;AAErD,eAAO,MAAM,mBAAmB,oBAAoB,CAAA;AAEpD,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAE7D,eAAO,MAAM,6BAA6B,kBAAkB,CAAA;AAE5D,eAAO,MAAM,gCAAgC,sDACQ,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,UAAgC,CAAA;AAEzD,eAAO,MAAM,WAAW,UAA6B,CAAA;AAErD,eAAO,MAAM,mBAAmB,oBAAoB,CAAA;AAEpD,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAE7D,eAAO,MAAM,6BAA6B,4BAA4B,CAAA;AAEtE,eAAO,MAAM,gCAAgC,sDACQ,CAAA"}
@@ -2,6 +2,6 @@ export const REMOTE_HOSTS = [".github.dev", ".gitpod.io"];
2
2
  export const LOCAL_HOSTS = ["localhost", "127.0.0.1"];
3
3
  export const IC_HOST_NETWORK_URI = "https://ic0.app";
4
4
  export const LOCAL_HOST_NETWORK_URI = "http://127.0.0.1:4943";
5
- export const IC_INTERNET_IDENTITY_PROVIDER = "https://id.ai";
5
+ export const IC_INTERNET_IDENTITY_PROVIDER = "https://id.ai/authorize";
6
6
  export const LOCAL_INTERNET_IDENTITY_PROVIDER = "http://rdmx6-jaaaa-aaaaa-aaadq-cai.localhost:4943";
7
7
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAA;AAE7D,MAAM,CAAC,MAAM,6BAA6B,GAAG,eAAe,CAAA;AAE5D,MAAM,CAAC,MAAM,gCAAgC,GAC3C,mDAAmD,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAA;AAE7D,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAA;AAEtE,MAAM,CAAC,MAAM,gCAAgC,GAC3C,mDAAmD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/core",
3
- "version": "3.3.1",
3
+ "version": "3.5.0",
4
4
  "description": "IC Reactor Core Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -46,8 +46,8 @@
46
46
  },
47
47
  "peerDependencies": {
48
48
  "zod": "^4.3.5",
49
- "@icp-sdk/core": "^5.2.1",
50
- "@icp-sdk/auth": "^5.0.0",
49
+ "@icp-sdk/core": "^5.3.1",
50
+ "@icp-sdk/auth": "^6.0.0",
51
51
  "@tanstack/query-core": "^5.0.0"
52
52
  },
53
53
  "peerDependenciesMeta": {
@@ -59,15 +59,15 @@
59
59
  }
60
60
  },
61
61
  "devDependencies": {
62
- "@icp-sdk/auth": "^5.0.0",
63
- "@icp-sdk/core": "^5.2.1",
64
- "@size-limit/preset-small-lib": "^12.0.1",
65
- "@tanstack/query-core": "^5.96.2",
66
- "@tanstack/react-query": "^5.96.2",
67
- "@types/node": "^25.5.2",
62
+ "@icp-sdk/auth": "^6.0.0",
63
+ "@icp-sdk/core": "^5.3.1",
64
+ "@size-limit/preset-small-lib": "^12.1.0",
65
+ "@tanstack/query-core": "^5.100.5",
66
+ "@tanstack/react-query": "^5.100.5",
67
+ "@types/node": "^25.6.0",
68
68
  "fake-indexeddb": "^6.2.5",
69
- "size-limit": "^12.0.1",
70
- "vitest": "^4.1.2"
69
+ "size-limit": "^12.1.0",
70
+ "vitest": "^4.1.5"
71
71
  },
72
72
  "size-limit": [
73
73
  {