@ic-reactor/react 0.2.7 → 0.2.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.
@@ -0,0 +1,15 @@
1
+ import React, { PropsWithChildren } from "react";
2
+ import { ActorSubclass } from "@dfinity/agent";
3
+ import { createReActor } from "./index";
4
+ import { IDL } from "@dfinity/candid";
5
+ import { ReActorOptions } from "@ic-reactor/store";
6
+ export type ReActor<A> = ReturnType<typeof createReActor<A>>;
7
+ export interface ReActorContextType<A = ActorSubclass<any>> extends ReActor<A> {
8
+ }
9
+ export declare const useReActor: <A = any>() => ReActorContextType<A>;
10
+ interface ReActorProviderProps extends PropsWithChildren, Omit<ReActorOptions, "idlFactory"> {
11
+ idlFactory?: IDL.InterfaceFactory;
12
+ loadingComponent?: React.ReactNode;
13
+ }
14
+ export declare const ReActorProvider: React.FC<ReActorProviderProps>;
15
+ export {};
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __rest = (this && this.__rest) || function (s, e) {
35
+ var t = {};
36
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
37
+ t[p] = s[p];
38
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
39
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
40
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
41
+ t[p[i]] = s[p[i]];
42
+ }
43
+ return t;
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.ReActorProvider = exports.useReActor = void 0;
47
+ const react_1 = __importStar(require("react"));
48
+ const agent_1 = require("@dfinity/agent");
49
+ const index_1 = require("./index");
50
+ const store_1 = require("@ic-reactor/store");
51
+ const ReActorContext = (0, react_1.createContext)(null);
52
+ const useReActor = () => {
53
+ const context = react_1.default.useContext(ReActorContext);
54
+ if (!context) {
55
+ throw new Error("useReActor must be used within a ReActorProvider");
56
+ }
57
+ return context;
58
+ };
59
+ exports.useReActor = useReActor;
60
+ const ReActorProvider = (_a) => {
61
+ var { children, loadingComponent = react_1.default.createElement("div", null, "Loading...") } = _a, config = __rest(_a, ["children", "loadingComponent"]);
62
+ const [didJs, setDidJS] = (0, react_1.useState)();
63
+ const fetchDidJs = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
64
+ const { canisterId } = config;
65
+ if (!canisterId) {
66
+ throw new Error("canisterId is required");
67
+ }
68
+ const agent = new agent_1.HttpAgent(Object.assign({}, config));
69
+ (0, store_1.getDidJsFromMetadata)(agent, canisterId).then((idlFactory) => __awaiter(void 0, void 0, void 0, function* () {
70
+ if (!idlFactory) {
71
+ try {
72
+ idlFactory = yield (0, store_1.getDidJsFromTmpHack)(agent, canisterId);
73
+ }
74
+ catch (err) {
75
+ if (/no query method/.test(err)) {
76
+ console.warn(err);
77
+ idlFactory = undefined;
78
+ }
79
+ else {
80
+ throw err;
81
+ }
82
+ }
83
+ if (!idlFactory) {
84
+ console.warn("No query method found for canister", canisterId);
85
+ }
86
+ }
87
+ setDidJS(idlFactory);
88
+ }));
89
+ return didJs;
90
+ }), [config.canisterId]);
91
+ (0, react_1.useEffect)(() => {
92
+ const { idlFactory } = config;
93
+ if (idlFactory) {
94
+ setDidJS({ idlFactory });
95
+ return;
96
+ }
97
+ fetchDidJs();
98
+ }, [fetchDidJs, config.idlFactory]);
99
+ const reActorHooks = (0, react_1.useMemo)(() => {
100
+ if (!didJs) {
101
+ return null;
102
+ }
103
+ try {
104
+ return (0, index_1.createReActor)(Object.assign(Object.assign({}, config), { idlFactory: didJs.idlFactory }));
105
+ }
106
+ catch (err) {
107
+ console.error(err);
108
+ return null;
109
+ }
110
+ }, [config, didJs]);
111
+ return (react_1.default.createElement(ReActorContext.Provider, { value: reActorHooks }, reActorHooks ? children : loadingComponent));
112
+ };
113
+ exports.ReActorProvider = ReActorProvider;
package/dist/hooks.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { CallMethod, ExtractReActorMethodArgs, ReActorActorStore, ReActorMethodField } from "@ic-reactor/store";
1
+ import { CallMethod, ExtractReActorMethodArgs, ReActorActorStore } from "@ic-reactor/store";
2
2
  import { ReActorUseQueryArgs, ReActorUseUpdateArgs } from "./types";
3
3
  export declare const getCallHooks: <A extends unknown>(callMethod: CallMethod<A>, actorStore: ReActorActorStore<A>) => {
4
4
  useQueryCall: <M extends keyof A>({ autoRefresh, refreshInterval, disableInitialCall, ...rest }: ReActorUseQueryArgs<A, M>) => {
5
5
  data: import("@ic-reactor/store").ExtractReActorMethodReturnType<A[M]> | undefined;
6
6
  error: Error | undefined;
7
7
  loading: boolean;
8
- field: ReActorMethodField<A> | undefined;
8
+ field: import("@ic-reactor/store").ReActorMethodField<A> | undefined;
9
9
  call: (replaceArgs?: ExtractReActorMethodArgs<A[M]> | undefined) => Promise<import("@ic-reactor/store").ExtractReActorMethodReturnType<A[M]> | undefined>;
10
10
  };
11
11
  useUpdateCall: <M_1 extends keyof A>(args: ReActorUseUpdateArgs<A, M_1>) => {
@@ -13,8 +13,8 @@ export declare const getCallHooks: <A extends unknown>(callMethod: CallMethod<A>
13
13
  error: Error | undefined;
14
14
  loading: boolean;
15
15
  call: (replaceArgs?: ExtractReActorMethodArgs<A[M_1]> | undefined) => Promise<import("@ic-reactor/store").ExtractReActorMethodReturnType<A[M_1]> | undefined>;
16
- field: ReActorMethodField<A> | undefined;
16
+ field: import("@ic-reactor/store").ReActorMethodField<A> | undefined;
17
17
  };
18
- useMethodField: (functionName: keyof A & string) => ReActorMethodField<A> | undefined;
19
- useMethodFields: () => ReActorMethodField<A>[];
18
+ useMethodField: (functionName: keyof A & string) => import("@ic-reactor/store").ReActorMethodField<A> | undefined;
19
+ useMethodFields: () => import("@ic-reactor/store").ReActorMethodField<A>[];
20
20
  };
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { AuthClientLoginOptions } from "@dfinity/auth-client";
2
- import type { ActorSubclass, ReActorAuthStore, ReActorOptions } from "@ic-reactor/store";
3
- export type ReActorContextType<A = ActorSubclass<any>> = ReActorAuthStore<A>;
1
+ import type { AuthClientLoginOptions } from "@dfinity/auth-client";
2
+ import type { ReActorOptions } from "@ic-reactor/store";
3
+ export * from "./context";
4
4
  export declare const createReActor: <A extends unknown>(options: ReActorOptions) => {
5
5
  useMethodFields: () => import("@ic-reactor/store").ReActorMethodField<A>[];
6
6
  useMethodField: (functionName: keyof A & string) => import("@ic-reactor/store").ReActorMethodField<A> | undefined;
7
7
  useActorStore: () => {
8
- initialize: (agentOptions?: import("@dfinity/agent").HttpAgentOptions | undefined, isLocal?: boolean | undefined) => Promise<void>;
8
+ initialize: (agentOptions?: import("@dfinity/agent").HttpAgentOptions | undefined, isLocal?: boolean | undefined) => void;
9
9
  actor: A | null;
10
10
  initialized: boolean;
11
11
  initializing: boolean;
package/dist/index.js CHANGED
@@ -1,4 +1,18 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
17
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
18
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -14,6 +28,7 @@ const store_1 = require("@ic-reactor/store");
14
28
  const react_1 = require("react");
15
29
  const zustand_1 = require("zustand");
16
30
  const hooks_1 = require("./hooks");
31
+ __exportStar(require("./context"), exports);
17
32
  const createReActor = (options) => {
18
33
  const isLocal = typeof process !== "undefined" &&
19
34
  (process.env.NODE_ENV === "development" ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/react",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "A React library for interacting with Dfinity actors",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "node": ">=10"
36
36
  },
37
37
  "dependencies": {
38
- "@ic-reactor/store": "^0.2.6",
38
+ "@ic-reactor/store": "^0.2.8",
39
39
  "zustand-utils": "^1.3"
40
40
  },
41
41
  "peerDependencies": {
@@ -48,5 +48,5 @@
48
48
  "react": ">=16.8",
49
49
  "zustand": "4.4"
50
50
  },
51
- "gitHead": "2705615cdbfac8e433d890a0ee52fba1bfbc290d"
51
+ "gitHead": "e967ca5fbc0d4b2fe76dc0af7c801fad49b2bb88"
52
52
  }