@nexly/react-web 0.9.0 → 0.12.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 CHANGED
@@ -1,3 +1,3 @@
1
- export { NexlyProvider, useNexlyClient, type NexlyProviderProps } from './nexly-provider.js';
1
+ export { NexlyProvider, useNexlyClient, type NexlyProviderProps, _NexlyClientIdentityContext, } from './nexly-provider.js';
2
2
  export { Nexly } from '@nexly/web';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,kBAAkB,EAEvB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,4 @@
1
- export { NexlyProvider, useNexlyClient } from './nexly-provider.js';
1
+ export { NexlyProvider, useNexlyClient,
2
+ // eslint-disable-next-line @typescript-eslint/naming-convention
3
+ _NexlyClientIdentityContext, } from './nexly-provider.js';
2
4
  export { Nexly } from '@nexly/web';
@@ -1,5 +1,14 @@
1
+ import { NexlyClient } from '@nexly/core';
1
2
  import { Nexly } from '@nexly/web';
2
3
  import { type ReactNode } from 'react';
4
+ /**
5
+ * @internal
6
+ *
7
+ * Lets framework-level adapters (e.g. `@nexly/next`) override the `client`
8
+ * identifier that the nested `NexlyProvider` sends to the collector. Do not
9
+ * import this from application code — use the appropriate framework package.
10
+ */
11
+ export declare const _NexlyClientIdentityContext: import("react").Context<NexlyClient>;
3
12
  export type NexlyProviderProps = {
4
13
  /** Override the ingest endpoint. Defaults to the Nexly production gateway. */
5
14
  collectUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"nexly-provider.d.ts","sourceRoot":"","sources":["../src/nexly-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIrF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,8FAA8F;IAC9F,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+HAA+H;IAC/H,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,KAAK,EACL,SAAS,EACT,YAAoB,EACpB,cAAsB,EACtB,QAAQ,GACT,EAAE,kBAAkB,2CA0BpB;AAED,sIAAsI;AACtI,wBAAgB,cAAc,IAAI,KAAK,GAAG,IAAI,CAE7C"}
1
+ {"version":3,"file":"nexly-provider.d.ts","sourceRoot":"","sources":["../src/nexly-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIrF;;;;;;GAMG;AAEH,eAAO,MAAM,2BAA2B,sCAAgD,CAAA;AAExF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,8FAA8F;IAC9F,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+HAA+H;IAC/H,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,KAAK,EACL,SAAS,EACT,YAAoB,EACpB,cAAsB,EACtB,QAAQ,GACT,EAAE,kBAAkB,2CA2BpB;AAED,sIAAsI;AACtI,wBAAgB,cAAc,IAAI,KAAK,GAAG,IAAI,CAE7C"}
@@ -1,9 +1,20 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { NexlyClient } from '@nexly/core';
2
3
  import { Nexly } from '@nexly/web';
3
4
  import { createContext, useContext, useEffect, useMemo } from 'react';
4
5
  const NexlyClientContext = createContext(null);
6
+ /**
7
+ * @internal
8
+ *
9
+ * Lets framework-level adapters (e.g. `@nexly/next`) override the `client`
10
+ * identifier that the nested `NexlyProvider` sends to the collector. Do not
11
+ * import this from application code — use the appropriate framework package.
12
+ */
13
+ // eslint-disable-next-line @typescript-eslint/naming-convention
14
+ export const _NexlyClientIdentityContext = createContext(NexlyClient.React);
5
15
  export function NexlyProvider({ collectUrl, appId, ingestKey, autoPageView = false, autoEngagement = false, children, }) {
6
- const client = useMemo(() => {
16
+ const clientId = useContext(_NexlyClientIdentityContext);
17
+ const nexly = useMemo(() => {
7
18
  const id = (appId ?? '').trim();
8
19
  const k = (ingestKey ?? '').trim();
9
20
  if (!id || !k) {
@@ -13,20 +24,20 @@ export function NexlyProvider({ collectUrl, appId, ingestKey, autoPageView = fal
13
24
  console.warn('[Nexly] Missing ingestKey — tracking is disabled.');
14
25
  return null;
15
26
  }
16
- return Nexly.init({ collectUrl, appId: id, key: k });
17
- }, [collectUrl, appId, ingestKey]);
27
+ return Nexly.init({ collectUrl, appId: id, key: k, client: clientId });
28
+ }, [collectUrl, appId, ingestKey, clientId]);
18
29
  useEffect(() => {
19
- if (autoPageView && client) {
20
- client.pageview();
30
+ if (autoPageView && nexly) {
31
+ nexly.pageview();
21
32
  }
22
- }, [autoPageView, client]);
33
+ }, [autoPageView, nexly]);
23
34
  useEffect(() => {
24
- if (!autoEngagement || !client) {
35
+ if (!autoEngagement || !nexly) {
25
36
  return;
26
37
  }
27
- return client.startEngagement();
28
- }, [autoEngagement, client]);
29
- return _jsx(NexlyClientContext.Provider, { value: client, children: children });
38
+ return nexly.startEngagement();
39
+ }, [autoEngagement, nexly]);
40
+ return _jsx(NexlyClientContext.Provider, { value: nexly, children: children });
30
41
  }
31
42
  /** Returns the configured {@link Nexly} client, or `null` if credentials are incomplete. Must be used under {@link NexlyProvider}. */
32
43
  export function useNexlyClient() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexly/react-web",
3
- "version": "0.9.0",
3
+ "version": "0.12.0",
4
4
  "description": "React bindings for Nexly (@nexly/web): provider, client hook, engagement, optional auto pageview",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -39,7 +39,7 @@
39
39
  "react": "^18.0.0 || ^19.0.0"
40
40
  },
41
41
  "dependencies": {
42
- "@nexly/web": "0.9.0"
42
+ "@nexly/web": "0.12.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/react": "^19.2.14",