@hackler/react-sdk 2.1.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/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ # ChangeLog
2
+
3
+ ## 1.0.6 - 2020-12-21
4
+
5
+ #### Changed
6
+ - Variation 호출 최적화
package/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # Hackle React SDK
2
+
3
+ ## Install
4
+ ```shell script
5
+ npm install @hackler/react-sdk --save
6
+ ```
7
+
8
+ ## Usage
9
+
10
+ ### initialize
11
+ ```javascript
12
+ import { createInstance, HackleProvider } from "@hackler/react-sdk";
13
+
14
+ const hackleClient = createInstance("YOUR_SDK_KEY")
15
+ const user = {
16
+ id: "ae2182e0",
17
+ properties: {
18
+ app_version: "1.0.1",
19
+ age: 23,
20
+ paying_customer: true
21
+ }
22
+ }
23
+ ReactDOM.render(
24
+ <HackleProvider hackleClient={hackleClient} user={user} timeout={1000}>
25
+ <YourApp />
26
+ </HackleProvider>,
27
+ document.getElementById('root')
28
+ );
29
+ ```
30
+
31
+ ### Decide the variation
32
+ ```javascript
33
+ function App() {
34
+ return (
35
+ <HackleExperiment experimentKey={42}>
36
+ <HackleVariation variation={"A"}>
37
+ <OldBlueButton />
38
+ </HackleVariation>
39
+ <HackleVariation variation={"B"}>
40
+ <NewRedButton />
41
+ </HackleVariation>
42
+ </HackleExperiment>
43
+ )
44
+ }
45
+ ```
46
+
47
+ ### Records the event
48
+ ```javascript
49
+ const track = useTrack()
50
+ const event = {
51
+ key: "purchase",
52
+ value: 5000,
53
+ properties: {
54
+ first_paying: false,
55
+ item_count: 5
56
+ }
57
+ }
58
+
59
+ <button onClick={() => track(event)}>Purchase</button>
60
+ ```
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { User } from "@hackler/js-client-sdk";
3
+ import { HackleReactSDKClient } from "./client";
4
+ interface HackleContext {
5
+ hackle: HackleReactSDKClient | undefined;
6
+ user?: User;
7
+ }
8
+ export declare const HackleContext: import("react").Context<HackleContext>;
9
+ export declare const HackleContextConsumer: import("react").Consumer<HackleContext>;
10
+ export declare const HackleContextProvider: import("react").Provider<HackleContext>;
11
+ export {};
12
+ //# sourceMappingURL=Context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,UAAU,aAAa;IACrB,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACxC,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ;AAED,eAAO,MAAM,aAAa,wCAGxB,CAAA;AAEF,eAAO,MAAM,qBAAqB,yCAAyB,CAAA;AAC3D,eAAO,MAAM,qBAAqB,yCAAyB,CAAA"}
package/lib/Context.js ADDED
@@ -0,0 +1,8 @@
1
+ import { createContext } from "react";
2
+ export var HackleContext = createContext({
3
+ hackle: undefined,
4
+ user: undefined,
5
+ });
6
+ export var HackleContextConsumer = HackleContext.Consumer;
7
+ export var HackleContextProvider = HackleContext.Provider;
8
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAQrC,MAAM,CAAC,IAAM,aAAa,GAAG,aAAa,CAAgB;IACxD,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;CAChB,CAAC,CAAA;AAEF,MAAM,CAAC,IAAM,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAA;AAC3D,MAAM,CAAC,IAAM,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAA"}
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ export interface ExperimentProps {
3
+ experimentKey: number;
4
+ children?: React.ReactNode;
5
+ }
6
+ declare function Experiment({ experimentKey, children }: ExperimentProps): any;
7
+ export declare const HackleExperiment: typeof Experiment;
8
+ export {};
9
+ //# sourceMappingURL=Experiment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Experiment.d.ts","sourceRoot":"","sources":["../src/Experiment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AACD,iBAAS,UAAU,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,eAAe,OAqB/D;AAED,eAAO,MAAM,gBAAgB,mBAAa,CAAA"}
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ import { useVariation } from "./hooks";
3
+ function Experiment(_a) {
4
+ var experimentKey = _a.experimentKey, children = _a.children;
5
+ var variation = useVariation(experimentKey);
6
+ if (!!children && typeof children === "function") {
7
+ return children(variation);
8
+ }
9
+ var match;
10
+ React.Children.forEach(children, (function (it) {
11
+ if (!React.isValidElement(it)) {
12
+ return;
13
+ }
14
+ if (it.props.variation) {
15
+ if (variation === it.props.variation) {
16
+ match = it;
17
+ }
18
+ }
19
+ else if (it.props.default) {
20
+ match = it;
21
+ }
22
+ }));
23
+ return match ? React.cloneElement(match, { variation: variation }) : null;
24
+ }
25
+ export var HackleExperiment = Experiment;
26
+ //# sourceMappingURL=Experiment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Experiment.js","sourceRoot":"","sources":["../src/Experiment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAMrC,SAAS,UAAU,CAAC,EAA4C;QAA1C,aAAa,mBAAA,EAAE,QAAQ,cAAA;IAC3C,IAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;IAE7C,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;QAChD,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAA;KAC3B;IAED,IAAI,KAAK,CAAA;IACT,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAA,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;YAC7B,OAAM;SACP;QACD,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE;YACtB,IAAI,SAAS,KAAK,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE;gBACpC,KAAK,GAAG,EAAE,CAAA;aACX;SACF;aAAM,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YAC3B,KAAK,GAAG,EAAE,CAAA;SACX;IACH,CAAC,CAAC,CAAC,CAAA;IACH,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChE,CAAC;AAED,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAU,CAAA"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { User } from "../../sdk-core";
3
+ export declare type ChildrenFunction = (isOn: boolean) => React.ReactNode;
4
+ export interface FeatureProps {
5
+ featureKey: number;
6
+ user?: User;
7
+ children: ChildrenFunction;
8
+ }
9
+ export declare const HackleFeature: React.FunctionComponent<FeatureProps>;
10
+ //# sourceMappingURL=Feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Feature.d.ts","sourceRoot":"","sources":["../src/Feature.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAGrC,oBAAY,gBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAA;AAEjE,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAQD,eAAO,MAAM,aAAa,uCAAU,CAAA"}
package/lib/Feature.js ADDED
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { useFeature } from "./hooks";
3
+ var Feature = function (props) {
4
+ var featureOn = useFeature(props.featureKey);
5
+ return React.createElement(React.Fragment, null, props.children(featureOn));
6
+ };
7
+ export var HackleFeature = Feature;
8
+ //# sourceMappingURL=Feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Feature.js","sourceRoot":"","sources":["../src/Feature.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAUpC,IAAM,OAAO,GAA0C,UAAC,KAAK;IAC3D,IAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAE9C,OAAO,0CAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAI,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,aAAa,GAAG,OAAO,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from "react";
2
+ import { User } from "@hackler/js-client-sdk";
3
+ import { HackleReactSDKClient } from "./client";
4
+ interface ProviderProps {
5
+ hackleClient: HackleReactSDKClient;
6
+ user?: User;
7
+ timeout?: number;
8
+ children?: ReactNode;
9
+ }
10
+ export declare function HackleProvider({ hackleClient, user, timeout, children }: ProviderProps): JSX.Element | null;
11
+ export {};
12
+ //# sourceMappingURL=Provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../src/Provider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,UAAU,aAAa;IACrB,YAAY,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,cAAc,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAc,EAAE,QAAQ,EAAE,EAAE,aAAa,sBAsB7F"}
@@ -0,0 +1,20 @@
1
+ import { __assign, __read } from "tslib";
2
+ import React, { useEffect, useState } from "react";
3
+ import { HackleContextProvider } from "./Context";
4
+ export function HackleProvider(_a) {
5
+ var hackleClient = _a.hackleClient, user = _a.user, _b = _a.timeout, timeout = _b === void 0 ? 3000 : _b, children = _a.children;
6
+ var state = {
7
+ hackle: hackleClient,
8
+ user: user,
9
+ };
10
+ var _c = __read(useState(false), 2), ready = _c[0], setReady = _c[1];
11
+ var _d = __read(useState(state), 2), value = _d[0], setValue = _d[1];
12
+ useEffect(function () {
13
+ setValue(function (prevState) {
14
+ return __assign(__assign({}, prevState), { user: user });
15
+ });
16
+ }, [user]);
17
+ hackleClient.onReady(function () { return setReady(true); }, timeout);
18
+ return ready ? React.createElement(HackleContextProvider, { value: value }, children) : null;
19
+ }
20
+ //# sourceMappingURL=Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../src/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAUjD,MAAM,UAAU,cAAc,CAAC,EAA+D;QAA7D,YAAY,kBAAA,EAAE,IAAI,UAAA,EAAE,eAAc,EAAd,OAAO,mBAAG,IAAI,KAAA,EAAE,QAAQ,cAAA;IAC3E,IAAM,KAAK,GAAG;QACZ,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,IAAI;KACX,CAAA;IAEK,IAAA,KAAA,OAAoB,QAAQ,CAAC,KAAK,CAAC,IAAA,EAAlC,KAAK,QAAA,EAAE,QAAQ,QAAmB,CAAA;IACnC,IAAA,KAAA,OAAoB,QAAQ,CAAC,KAAK,CAAC,IAAA,EAAlC,KAAK,QAAA,EAAE,QAAQ,QAAmB,CAAA;IAGzC,SAAS,CAAC;QACR,QAAQ,CAAC,UAAA,SAAS;YAChB,6BACK,SAAS,KACZ,IAAI,EAAE,IAAI,IACX;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,YAAY,CAAC,OAAO,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,EAAd,CAAc,EAAE,OAAO,CAAC,CAAA;IAEnD,OAAO,KAAK,CAAC,CAAC,CAAC,oBAAC,qBAAqB,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAAyB,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/F,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from "react";
2
+ export interface VariationProps {
3
+ variation: string;
4
+ default?: any;
5
+ children?: ReactNode;
6
+ }
7
+ declare function Variation({ variation, children }: VariationProps): JSX.Element;
8
+ export declare const HackleVariation: typeof Variation;
9
+ export {};
10
+ //# sourceMappingURL=Variation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Variation.d.ts","sourceRoot":"","sources":["../src/Variation.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AACD,iBAAS,SAAS,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAC,EAAE,cAAc,eAEvD;AAED,eAAO,MAAM,eAAe,kBAAY,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ function Variation(_a) {
3
+ var variation = _a.variation, children = _a.children;
4
+ return React.createElement(React.Fragment, null, children);
5
+ }
6
+ export var HackleVariation = Variation;
7
+ //# sourceMappingURL=Variation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Variation.js","sourceRoot":"","sources":["../src/Variation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,SAAS,SAAS,CAAC,EAAqC;QAApC,SAAS,eAAA,EAAE,QAAQ,cAAA;IACrC,OAAO,0CAAG,QAAQ,CAAI,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,IAAM,eAAe,GAAG,SAAS,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { Event, User } from "@hackler/js-client-sdk";
2
+ import { Decision, FeatureFlagDecision } from "../../sdk-core/lib/internal/model/model";
3
+ import { PageView } from "@hackler/js-client-sdk/lib/HackleClient";
4
+ interface Config {
5
+ debug?: boolean;
6
+ auto_track_page_view?: boolean;
7
+ }
8
+ export declare class HackleReactSDKClient {
9
+ private client;
10
+ constructor(sdkKey: string, config?: Config);
11
+ variation(experimentKey: number, user?: User, defaultVariation?: string): string;
12
+ variationDetail(experimentKey: number, user?: User, defaultVariation?: string): Decision;
13
+ isFeatureOn(featureKey: number, user?: User): boolean;
14
+ featureFlagDetail(featureKey: number, user?: User): FeatureFlagDecision;
15
+ track(event: string | Event, user?: User): void;
16
+ trackPageView(option?: PageView): void;
17
+ onReady(cb: any, timeout?: number): void;
18
+ }
19
+ export declare function createInstance(sdkKey: string, config?: Config): HackleReactSDKClient;
20
+ export {};
21
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgB,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAElE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAA;AAElE,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAQ3C,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAIhF,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,QAAQ;IAIxF,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO;IAIrD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,mBAAmB;IAIvE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI;IAI/C,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI;IAItC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM;CAGlC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAEpF"}
package/lib/client.js ADDED
@@ -0,0 +1,35 @@
1
+ import { __assign } from "tslib";
2
+ import * as Hackle from "@hackler/js-client-sdk";
3
+ import { SDK_NAME_HEADER, SDK_VERSION_HEADER } from "./config";
4
+ var HackleReactSDKClient = /** @class */ (function () {
5
+ function HackleReactSDKClient(sdkKey, config) {
6
+ this.client = Hackle.createInstance(sdkKey, __assign(__assign({}, config), { SDK_NAME_HEADER: SDK_NAME_HEADER, SDK_VERSION_HEADER: SDK_VERSION_HEADER }));
7
+ }
8
+ HackleReactSDKClient.prototype.variation = function (experimentKey, user, defaultVariation) {
9
+ return this.client.variation(experimentKey, user, defaultVariation);
10
+ };
11
+ HackleReactSDKClient.prototype.variationDetail = function (experimentKey, user, defaultVariation) {
12
+ return this.client.variationDetail(experimentKey, user, defaultVariation);
13
+ };
14
+ HackleReactSDKClient.prototype.isFeatureOn = function (featureKey, user) {
15
+ return this.client.isFeatureOn(featureKey, user);
16
+ };
17
+ HackleReactSDKClient.prototype.featureFlagDetail = function (featureKey, user) {
18
+ return this.client.featureFlagDetail(featureKey, user);
19
+ };
20
+ HackleReactSDKClient.prototype.track = function (event, user) {
21
+ this.client.track(event, user);
22
+ };
23
+ HackleReactSDKClient.prototype.trackPageView = function (option) {
24
+ this.client.trackPageView(option);
25
+ };
26
+ HackleReactSDKClient.prototype.onReady = function (cb, timeout) {
27
+ this.client.onReady(cb, timeout);
28
+ };
29
+ return HackleReactSDKClient;
30
+ }());
31
+ export { HackleReactSDKClient };
32
+ export function createInstance(sdkKey, config) {
33
+ return new HackleReactSDKClient(sdkKey, config);
34
+ }
35
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAS9D;IAGE,8BAAY,MAAc,EAAE,MAAe;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,wBACrC,MAAM,KACT,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,IACtC,CAAA;IACJ,CAAC;IAED,wCAAS,GAAT,UAAU,aAAqB,EAAE,IAAW,EAAE,gBAAyB;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrE,CAAC;IAED,8CAAe,GAAf,UAAgB,aAAqB,EAAE,IAAW,EAAE,gBAAyB;QAC3E,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;IAC3E,CAAC;IAED,0CAAW,GAAX,UAAY,UAAkB,EAAE,IAAW;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAClD,CAAC;IAED,gDAAiB,GAAjB,UAAkB,UAAkB,EAAE,IAAW;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,oCAAK,GAAL,UAAM,KAAqB,EAAE,IAAW;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,4CAAa,GAAb,UAAc,MAAiB;QAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,sCAAO,GAAP,UAAQ,EAAO,EAAE,OAAgB;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IACH,2BAAC;AAAD,CAAC,AAtCD,IAsCC;;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,MAAe;IAC5D,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const SDK_NAME_HEADER = "react-sdk";
2
+ export declare const SDK_VERSION_HEADER = "2.1.0";
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cAAc,CAAA;AAC1C,eAAO,MAAM,kBAAkB,UAAU,CAAA"}
package/lib/config.js ADDED
@@ -0,0 +1,3 @@
1
+ export var SDK_NAME_HEADER = "react-sdk";
2
+ export var SDK_VERSION_HEADER = "2.1.0";
3
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,eAAe,GAAG,WAAW,CAAA;AAC1C,MAAM,CAAC,IAAM,kBAAkB,GAAG,OAAO,CAAA"}
package/lib/hooks.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { Event } from "@hackler/js-client-sdk";
2
+ import { PageView } from "@hackler/js-client-sdk/lib/HackleClient";
3
+ import { FeatureFlagDecision } from "../../sdk-core/lib/internal/model/model";
4
+ import { Decision } from "@hackler/sdk-core/lib/internal/model/model";
5
+ export declare function useVariation(experimentKey: number, defaultVariation?: string): string;
6
+ export declare function useVariationDetail(experimentKey: number, defaultVariation?: string): Decision;
7
+ export declare function useFeature(featureKey: number): boolean;
8
+ export declare function useFeatureFlagDetail(featureKey: number): FeatureFlagDecision;
9
+ interface Track {
10
+ (event: Event): void;
11
+ }
12
+ export declare function useTrack(): Track;
13
+ interface TrackPageView {
14
+ (option?: PageView): void;
15
+ }
16
+ export declare function usePageView(): TrackPageView;
17
+ export {};
18
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAQ,MAAM,wBAAwB,CAAA;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAA;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAkB,MAAM,4CAA4C,CAAA;AAKrF,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,SAAM,GAAG,MAAM,CA2BlF;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,SAAM,GAAG,QAAQ,CA2B1F;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA2BtD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CA2B5E;AAED,UAAU,KAAK;IACb,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACrB;AACD,wBAAgB,QAAQ,IAAI,KAAK,CAShC;AAED,UAAU,aAAa;IACrB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC1B;AACD,wBAAgB,WAAW,IAAI,aAAa,CAkB3C"}
package/lib/hooks.js ADDED
@@ -0,0 +1,152 @@
1
+ import { __assign, __read } from "tslib";
2
+ import { useCallback, useContext, useState } from "react";
3
+ import { HackleContext } from "./Context";
4
+ import { FeatureFlagDecision } from "../../sdk-core/lib/internal/model/model";
5
+ import { Decision, DecisionReason } from "@hackler/sdk-core/lib/internal/model/model";
6
+ import Logger from "@hackler/sdk-core/lib/internal/logger";
7
+ var log = Logger.log;
8
+ export function useVariation(experimentKey, defaultVariation) {
9
+ if (defaultVariation === void 0) { defaultVariation = "A"; }
10
+ var _a = useContext(HackleContext), hackle = _a.hackle, user = _a.user;
11
+ var getVariation = useCallback(function () {
12
+ return (hackle === null || hackle === void 0 ? void 0 : hackle.variation(experimentKey, user)) || defaultVariation;
13
+ }, [defaultVariation, experimentKey, user, hackle]);
14
+ var _b = __read(useState(function () {
15
+ if (notExistClient(hackle)) {
16
+ log.error("HackleClient is not existed");
17
+ return defaultVariation;
18
+ }
19
+ return getVariation();
20
+ }), 2), variation = _b[0], setVariation = _b[1];
21
+ var currentInput = {
22
+ key: experimentKey,
23
+ user: user
24
+ };
25
+ var _c = __read(useState(currentInput), 2), prevInput = _c[0], setPrevInput = _c[1];
26
+ if (!isInputEqual(prevInput, currentInput)) {
27
+ setPrevInput(currentInput);
28
+ setVariation(getVariation());
29
+ }
30
+ return variation;
31
+ }
32
+ export function useVariationDetail(experimentKey, defaultVariation) {
33
+ if (defaultVariation === void 0) { defaultVariation = "A"; }
34
+ var _a = useContext(HackleContext), hackle = _a.hackle, user = _a.user;
35
+ var getVariationDetail = useCallback(function () {
36
+ return (hackle === null || hackle === void 0 ? void 0 : hackle.variationDetail(experimentKey, user)) || Decision.of(defaultVariation, DecisionReason.EXCEPTION);
37
+ }, [defaultVariation, experimentKey, user, hackle]);
38
+ var _b = __read(useState(function () {
39
+ if (notExistClient(hackle)) {
40
+ log.error("HackleClient is not existed");
41
+ return Decision.of(defaultVariation, DecisionReason.EXCEPTION);
42
+ }
43
+ return getVariationDetail();
44
+ }), 2), variationDetail = _b[0], setVariationDetail = _b[1];
45
+ var currentInput = {
46
+ key: experimentKey,
47
+ user: user
48
+ };
49
+ var _c = __read(useState(currentInput), 2), prevInput = _c[0], setPrevInput = _c[1];
50
+ if (!isInputEqual(prevInput, currentInput)) {
51
+ setPrevInput(currentInput);
52
+ setVariationDetail(getVariationDetail());
53
+ }
54
+ return variationDetail;
55
+ }
56
+ export function useFeature(featureKey) {
57
+ var _a = useContext(HackleContext), hackle = _a.hackle, user = _a.user;
58
+ var getIsOn = useCallback(function () {
59
+ return (hackle === null || hackle === void 0 ? void 0 : hackle.isFeatureOn(featureKey, user)) || false;
60
+ }, [featureKey, user, hackle]);
61
+ var _b = __read(useState(function () {
62
+ if (notExistClient(hackle)) {
63
+ log.error("HackleClient is not existed.");
64
+ return false;
65
+ }
66
+ return getIsOn();
67
+ }), 2), isOn = _b[0], setIsOn = _b[1];
68
+ var currentInput = {
69
+ key: featureKey,
70
+ user: user,
71
+ };
72
+ var _c = __read(useState(currentInput), 2), prevInput = _c[0], setPrevInput = _c[1];
73
+ if (!isInputEqual(prevInput, currentInput)) {
74
+ setPrevInput(currentInput);
75
+ setIsOn(getIsOn());
76
+ }
77
+ return isOn;
78
+ }
79
+ export function useFeatureFlagDetail(featureKey) {
80
+ var _a = useContext(HackleContext), hackle = _a.hackle, user = _a.user;
81
+ var getFeatureDetail = useCallback(function () {
82
+ return (hackle === null || hackle === void 0 ? void 0 : hackle.featureFlagDetail(featureKey, user)) || FeatureFlagDecision.off(DecisionReason.EXCEPTION);
83
+ }, [featureKey, user, hackle]);
84
+ var _b = __read(useState(function () {
85
+ if (notExistClient(hackle)) {
86
+ log.error("HackleClient is not existed.");
87
+ return FeatureFlagDecision.off(DecisionReason.EXCEPTION);
88
+ }
89
+ return getFeatureDetail();
90
+ }), 2), featureDetail = _b[0], setFeatureDetail = _b[1];
91
+ var currentInput = {
92
+ key: featureKey,
93
+ user: user,
94
+ };
95
+ var _c = __read(useState(currentInput), 2), prevInput = _c[0], setPrevInput = _c[1];
96
+ if (!isInputEqual(prevInput, currentInput)) {
97
+ setPrevInput(currentInput);
98
+ setFeatureDetail(getFeatureDetail());
99
+ }
100
+ return featureDetail;
101
+ }
102
+ export function useTrack() {
103
+ var _a = useContext(HackleContext), hackle = _a.hackle, user = _a.user;
104
+ if (notExistClient(hackle)) {
105
+ log.error("HackleClient is not existed");
106
+ return function () { };
107
+ }
108
+ return function (event) { return hackle === null || hackle === void 0 ? void 0 : hackle.track(event, user); };
109
+ }
110
+ export function usePageView() {
111
+ var _a = useContext(HackleContext), hackle = _a.hackle, user = _a.user;
112
+ if (notExistClient(hackle)) {
113
+ log.error("HackleClient is not existed");
114
+ return function () { };
115
+ }
116
+ return function (option) {
117
+ if (option === null || option === void 0 ? void 0 : option.user) {
118
+ hackle === null || hackle === void 0 ? void 0 : hackle.trackPageView(option);
119
+ }
120
+ else {
121
+ hackle === null || hackle === void 0 ? void 0 : hackle.trackPageView(__assign(__assign({}, option), { user: user }));
122
+ }
123
+ };
124
+ }
125
+ function notExistClient(hackle) {
126
+ return !hackle;
127
+ }
128
+ function isInputEqual(prev, current) {
129
+ var _a, _b, _c, _d;
130
+ return (prev.key === current.key &&
131
+ ((_a = prev.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = current.user) === null || _b === void 0 ? void 0 : _b.id) &&
132
+ arePropertiesEqual((_c = prev.user) === null || _c === void 0 ? void 0 : _c.properties, (_d = current.user) === null || _d === void 0 ? void 0 : _d.properties));
133
+ }
134
+ function arePropertiesEqual(prevProps, currentProps) {
135
+ var prev = coerceUnknownToProperties(prevProps);
136
+ var current = coerceUnknownToProperties(currentProps);
137
+ var prevKeys = Object.keys(prev);
138
+ var currentKeys = Object.keys(current);
139
+ if (prevKeys.length !== currentKeys.length) {
140
+ return false;
141
+ }
142
+ return prevKeys.every(function (it) {
143
+ return it in current && prev[it] === current[it];
144
+ });
145
+ }
146
+ function coerceUnknownToProperties(props) {
147
+ if (typeof props === "object" && props !== null) {
148
+ return props;
149
+ }
150
+ return {};
151
+ }
152
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export { createInstance } from "./client";
2
+ export { HackleProvider } from "./Provider";
3
+ export { HackleContext, HackleContextProvider, HackleContextConsumer } from "./Context";
4
+ export { useVariation, useVariationDetail, useTrack } from "./hooks";
5
+ export { HackleExperiment } from "./Experiment";
6
+ export { HackleVariation } from "./Variation";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
package/lib/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { createInstance } from "./client";
2
+ export { HackleProvider } from "./Provider";
3
+ export { HackleContext, HackleContextProvider, HackleContextConsumer } from "./Context";
4
+ export { useVariation, useVariationDetail, useTrack } from "./hooks";
5
+ export { HackleExperiment } from "./Experiment";
6
+ export { HackleVariation } from "./Variation";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@hackler/react-sdk",
3
+ "version": "2.1.0",
4
+ "description": "React SDK for Hackle",
5
+ "author": {
6
+ "name": "Hackle",
7
+ "email": "support@hackle.io",
8
+ "url": "https://www.hackle.io/"
9
+ },
10
+ "homepage": "https://www.hackle.io/",
11
+ "license": "ISC",
12
+ "main": "./lib/index.js",
13
+ "types": "./lib/index.d.ts",
14
+ "files": [
15
+ "lib"
16
+ ],
17
+ "keywords": [
18
+ "hackle",
19
+ "sdk",
20
+ "abtest",
21
+ "react"
22
+ ],
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/hackle-io/hackle-javascript-sdk.git"
26
+ },
27
+ "scripts": {
28
+ "build": "npm run clean && npm run compile",
29
+ "clean": "rm -rf ./lib && rm -rf tsconfig.tsbuildinfo",
30
+ "compile": "tsc",
31
+ "watch": "tsc --watch",
32
+ "publish:rc": "npm run build && npm publish --tag rc",
33
+ "publish:release": "npm run build && npm publish"
34
+ },
35
+ "bugs": {
36
+ "url": "https://github.com/hackle-io/hackle-javascript-sdk/issues"
37
+ },
38
+ "dependencies": {
39
+ "@hackler/js-client-sdk": "2.1.0"
40
+ },
41
+ "peerDependencies": {
42
+ "react": ">=16.8.0"
43
+ },
44
+ "gitHead": "01b111d26f53571c2a3fbf65a356492621dd321b",
45
+ "devDependencies": {
46
+ "@types/react": "^16.9.56",
47
+ "react": "^16.8.0",
48
+ "react-dom": "^16.8.0",
49
+ "tslib": "^2.0.3",
50
+ "typescript": "^4.0.5"
51
+ },
52
+ "licenses": [
53
+ {
54
+ "type": "MIT"
55
+ }
56
+ ]
57
+ }