@savvagent/solid 1.0.1 → 1.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/dist/index.d.mts CHANGED
@@ -282,6 +282,37 @@ interface CreateUserReturn {
282
282
  * ```
283
283
  */
284
284
  declare function createUser(): CreateUserReturn;
285
+ interface CreateEnvironmentReturn {
286
+ /** Current environment as a reactive signal */
287
+ environment: Accessor<string>;
288
+ /** Set the environment */
289
+ setEnvironment: (env: string) => void;
290
+ /** Get the current environment from client */
291
+ getEnvironment: () => string;
292
+ }
293
+ /**
294
+ * Create signals for environment management.
295
+ *
296
+ * @returns Environment management functions and reactive signal
297
+ *
298
+ * @example
299
+ * ```tsx
300
+ * import { createEnvironment } from '@savvagent/solid';
301
+ *
302
+ * function EnvironmentSwitcher() {
303
+ * const { environment, setEnvironment } = createEnvironment();
304
+ *
305
+ * return (
306
+ * <select value={environment()} onChange={(e) => setEnvironment(e.target.value)}>
307
+ * <option value="development">Development</option>
308
+ * <option value="staging">Staging</option>
309
+ * <option value="production">Production</option>
310
+ * </select>
311
+ * );
312
+ * }
313
+ * ```
314
+ */
315
+ declare function createEnvironment(): CreateEnvironmentReturn;
285
316
  /**
286
317
  * Legacy function - use createUser() instead.
287
318
  * Create signals for user identification.
@@ -355,4 +386,4 @@ declare function createTrackError(flagKey: string, context?: FlagContext): (erro
355
386
  */
356
387
  declare function trackError(flagKey: string, error: Error, context?: FlagContext): void;
357
388
 
358
- export { type CreateFlagOptions, type CreateFlagReturn, type CreateFlagsOptions, type CreateFlagsReturn, type CreateUserReturn, type DefaultFlagContext, SavvagentProvider, type SavvagentProviderProps, createFlag, createFlagValue, createFlags, createTrackError, createUser, createUserSignals, createWithFlag, trackError, useSavvagent };
389
+ export { type CreateEnvironmentReturn, type CreateFlagOptions, type CreateFlagReturn, type CreateFlagsOptions, type CreateFlagsReturn, type CreateUserReturn, type DefaultFlagContext, SavvagentProvider, type SavvagentProviderProps, createEnvironment, createFlag, createFlagValue, createFlags, createTrackError, createUser, createUserSignals, createWithFlag, trackError, useSavvagent };
package/dist/index.d.ts CHANGED
@@ -282,6 +282,37 @@ interface CreateUserReturn {
282
282
  * ```
283
283
  */
284
284
  declare function createUser(): CreateUserReturn;
285
+ interface CreateEnvironmentReturn {
286
+ /** Current environment as a reactive signal */
287
+ environment: Accessor<string>;
288
+ /** Set the environment */
289
+ setEnvironment: (env: string) => void;
290
+ /** Get the current environment from client */
291
+ getEnvironment: () => string;
292
+ }
293
+ /**
294
+ * Create signals for environment management.
295
+ *
296
+ * @returns Environment management functions and reactive signal
297
+ *
298
+ * @example
299
+ * ```tsx
300
+ * import { createEnvironment } from '@savvagent/solid';
301
+ *
302
+ * function EnvironmentSwitcher() {
303
+ * const { environment, setEnvironment } = createEnvironment();
304
+ *
305
+ * return (
306
+ * <select value={environment()} onChange={(e) => setEnvironment(e.target.value)}>
307
+ * <option value="development">Development</option>
308
+ * <option value="staging">Staging</option>
309
+ * <option value="production">Production</option>
310
+ * </select>
311
+ * );
312
+ * }
313
+ * ```
314
+ */
315
+ declare function createEnvironment(): CreateEnvironmentReturn;
285
316
  /**
286
317
  * Legacy function - use createUser() instead.
287
318
  * Create signals for user identification.
@@ -355,4 +386,4 @@ declare function createTrackError(flagKey: string, context?: FlagContext): (erro
355
386
  */
356
387
  declare function trackError(flagKey: string, error: Error, context?: FlagContext): void;
357
388
 
358
- export { type CreateFlagOptions, type CreateFlagReturn, type CreateFlagsOptions, type CreateFlagsReturn, type CreateUserReturn, type DefaultFlagContext, SavvagentProvider, type SavvagentProviderProps, createFlag, createFlagValue, createFlags, createTrackError, createUser, createUserSignals, createWithFlag, trackError, useSavvagent };
389
+ export { type CreateEnvironmentReturn, type CreateFlagOptions, type CreateFlagReturn, type CreateFlagsOptions, type CreateFlagsReturn, type CreateUserReturn, type DefaultFlagContext, SavvagentProvider, type SavvagentProviderProps, createEnvironment, createFlag, createFlagValue, createFlags, createTrackError, createUser, createUserSignals, createWithFlag, trackError, useSavvagent };
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ var index_exports = {};
22
22
  __export(index_exports, {
23
23
  FlagClient: () => import_sdk2.FlagClient,
24
24
  SavvagentProvider: () => SavvagentProvider,
25
+ createEnvironment: () => createEnvironment,
25
26
  createFlag: () => createFlag,
26
27
  createFlagValue: () => createFlagValue,
27
28
  createFlags: () => createFlags,
@@ -62,6 +63,9 @@ function SavvagentProvider(props) {
62
63
  language: props.defaultContext?.language,
63
64
  attributes: props.defaultContext?.attributes
64
65
  }));
66
+ if (props.defaultContext?.userId) {
67
+ client.setUserId(props.defaultContext.userId);
68
+ }
65
69
  (0, import_solid_js.onCleanup)(() => {
66
70
  client.close();
67
71
  });
@@ -328,6 +332,24 @@ function createUser() {
328
332
  getAnonymousId
329
333
  };
330
334
  }
335
+ function createEnvironment() {
336
+ const {
337
+ client
338
+ } = useSavvagent();
339
+ const [environment, setEnvironmentSignal] = (0, import_solid_js.createSignal)(client.getEnvironment());
340
+ const setEnvironment = (env) => {
341
+ client.setEnvironment(env);
342
+ setEnvironmentSignal(env);
343
+ };
344
+ const getEnvironment = () => {
345
+ return client.getEnvironment();
346
+ };
347
+ return {
348
+ environment,
349
+ setEnvironment,
350
+ getEnvironment
351
+ };
352
+ }
331
353
  function createUserSignals() {
332
354
  const {
333
355
  client
@@ -357,6 +379,7 @@ function trackError(flagKey, error, context) {
357
379
  0 && (module.exports = {
358
380
  FlagClient,
359
381
  SavvagentProvider,
382
+ createEnvironment,
360
383
  createFlag,
361
384
  createFlagValue,
362
385
  createFlags,
package/dist/index.mjs CHANGED
@@ -28,6 +28,9 @@ function SavvagentProvider(props) {
28
28
  language: props.defaultContext?.language,
29
29
  attributes: props.defaultContext?.attributes
30
30
  }));
31
+ if (props.defaultContext?.userId) {
32
+ client.setUserId(props.defaultContext.userId);
33
+ }
31
34
  onCleanup(() => {
32
35
  client.close();
33
36
  });
@@ -294,6 +297,24 @@ function createUser() {
294
297
  getAnonymousId
295
298
  };
296
299
  }
300
+ function createEnvironment() {
301
+ const {
302
+ client
303
+ } = useSavvagent();
304
+ const [environment, setEnvironmentSignal] = createSignal(client.getEnvironment());
305
+ const setEnvironment = (env) => {
306
+ client.setEnvironment(env);
307
+ setEnvironmentSignal(env);
308
+ };
309
+ const getEnvironment = () => {
310
+ return client.getEnvironment();
311
+ };
312
+ return {
313
+ environment,
314
+ setEnvironment,
315
+ getEnvironment
316
+ };
317
+ }
297
318
  function createUserSignals() {
298
319
  const {
299
320
  client
@@ -322,6 +343,7 @@ function trackError(flagKey, error, context) {
322
343
  export {
323
344
  FlagClient2 as FlagClient,
324
345
  SavvagentProvider,
346
+ createEnvironment,
325
347
  createFlag,
326
348
  createFlagValue,
327
349
  createFlags,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savvagent/solid",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "SolidJS SDK for Savvagent feature flags with reactive primitives",
5
5
  "author": "Savvagent",
6
6
  "license": "MIT",
@@ -21,12 +21,15 @@
21
21
  "solid-js": ">=1.0.0"
22
22
  },
23
23
  "dependencies": {
24
- "@savvagent/sdk": "1.0.1"
24
+ "@savvagent/sdk": "1.1.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@solidjs/testing-library": "0.8.10",
28
28
  "@testing-library/jest-dom": "6.9.1",
29
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
30
+ "@typescript-eslint/parser": "^7.18.0",
29
31
  "esbuild-plugin-solid": "0.6.0",
32
+ "eslint": "^8.57.0",
30
33
  "jsdom": "27.2.0",
31
34
  "solid-js": "^1.9.10",
32
35
  "tsup": "^8.5.1",