@spotify-confidence/openfeature-server-provider-local 0.1.1 → 0.2.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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.0](https://github.com/spotify/confidence-resolver/compare/openfeature-provider-js-v0.1.1...openfeature-provider-js-v0.2.0) (2025-11-24)
4
+
5
+
6
+ ### Features
7
+
8
+ * send js sdk info in resolve request ([#161](https://github.com/spotify/confidence-resolver/issues/161)) ([5cbc7d9](https://github.com/spotify/confidence-resolver/commit/5cbc7d9e2ada26c52298d74faaba50ec6cb4c3e7))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * rust-guest bumped from 0.1.9 to 0.1.10
16
+
3
17
  ## [0.1.1](https://github.com/spotify/confidence-resolver-rust/compare/openfeature-provider-js-v0.1.0...openfeature-provider-js-v0.1.1) (2025-11-03)
4
18
 
5
19
 
package/README.md CHANGED
@@ -78,6 +78,11 @@ The provider periodically:
78
78
 
79
79
  ---
80
80
 
81
+ ## Migration from online resolver
82
+ If you're currently using the ["online resolver"](https://github.com/spotify/confidence-sdk-js/tree/main/packages/openfeature-server-provider) and wants to improve the resolve latency, [migration](MIGRATION.md) is easy!
83
+
84
+ ---
85
+
81
86
  ## Sticky Assignments
82
87
 
83
88
  Confidence supports "sticky" flag assignments to ensure users receive consistent variant assignments even when their context changes or flag configurations are updated. This SDK falls back to a cloud resolve in these cases.
@@ -182,3 +187,11 @@ The package exports a browser ESM build that compiles the WASM via streaming and
182
187
  ## License
183
188
 
184
189
  See the root `LICENSE`.
190
+
191
+ ## Formatting
192
+
193
+ Code is formatted using prettier, you can format all files by running
194
+
195
+ ```sh
196
+ yarn format
197
+ ```
Binary file
@@ -2,6 +2,32 @@ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
2
  import { EvaluationContext, JsonValue, Provider, ProviderMetadata, ProviderStatus, ResolutionDetails } from "@openfeature/server-sdk";
3
3
 
4
4
  //#region src/proto/api.d.ts
5
+ declare enum SdkId {
6
+ SDK_ID_UNSPECIFIED = 0,
7
+ SDK_ID_JAVA_PROVIDER = 1,
8
+ SDK_ID_KOTLIN_PROVIDER = 2,
9
+ SDK_ID_SWIFT_PROVIDER = 3,
10
+ SDK_ID_JS_WEB_PROVIDER = 4,
11
+ SDK_ID_JS_SERVER_PROVIDER = 5,
12
+ SDK_ID_PYTHON_PROVIDER = 6,
13
+ SDK_ID_GO_PROVIDER = 7,
14
+ SDK_ID_RUBY_PROVIDER = 8,
15
+ SDK_ID_RUST_PROVIDER = 9,
16
+ SDK_ID_JAVA_CONFIDENCE = 10,
17
+ SDK_ID_KOTLIN_CONFIDENCE = 11,
18
+ SDK_ID_SWIFT_CONFIDENCE = 12,
19
+ SDK_ID_JS_CONFIDENCE = 13,
20
+ SDK_ID_PYTHON_CONFIDENCE = 14,
21
+ SDK_ID_GO_CONFIDENCE = 15,
22
+ SDK_ID_RUST_CONFIDENCE = 16,
23
+ SDK_ID_FLUTTER_IOS_CONFIDENCE = 17,
24
+ SDK_ID_FLUTTER_ANDROID_CONFIDENCE = 18,
25
+ SDK_ID_DOTNET_CONFIDENCE = 19,
26
+ SDK_ID_GO_LOCAL_PROVIDER = 20,
27
+ SDK_ID_JAVA_LOCAL_PROVIDER = 21,
28
+ SDK_ID_JS_LOCAL_SERVER_PROVIDER = 22,
29
+ UNRECOGNIZED = -1,
30
+ }
5
31
  declare enum ResolveReason {
6
32
  /** RESOLVE_REASON_UNSPECIFIED - Unspecified enum. */
7
33
  RESOLVE_REASON_UNSPECIFIED = 0,
@@ -24,6 +50,11 @@ declare enum ResolveReason {
24
50
  RESOLVE_REASON_ERROR = 6,
25
51
  UNRECOGNIZED = -1,
26
52
  }
53
+ interface Sdk {
54
+ id?: SdkId | undefined;
55
+ customId?: string | undefined;
56
+ version: string;
57
+ }
27
58
  interface ResolveFlagsRequest {
28
59
  /**
29
60
  * If non-empty, the specific flags are resolved, otherwise all flags
@@ -50,6 +81,8 @@ interface ResolveFlagsRequest {
50
81
  * `apply` should likely be set to false.
51
82
  */
52
83
  apply: boolean;
84
+ /** Information about the SDK used to initiate the request. */
85
+ sdk?: Sdk | undefined;
53
86
  }
54
87
  interface ResolveFlagsResponse {
55
88
  /**
@@ -143,6 +176,7 @@ interface ResolveWithStickyResponse_MaterializationUpdate {
143
176
  rule: string;
144
177
  variant: string;
145
178
  }
179
+ declare const Sdk: MessageFns<Sdk>;
146
180
  declare const ResolveFlagsRequest: MessageFns<ResolveFlagsRequest>;
147
181
  declare const ResolveFlagsResponse: MessageFns<ResolveFlagsResponse>;
148
182
  declare const ResolvedFlag: MessageFns<ResolvedFlag>;
@@ -315,6 +315,115 @@ function isObject$1(value) {
315
315
  function isSet$3(value) {
316
316
  return value !== null && value !== void 0;
317
317
  }
318
+ let SdkId = /* @__PURE__ */ function(SdkId$1) {
319
+ SdkId$1[SdkId$1["SDK_ID_UNSPECIFIED"] = 0] = "SDK_ID_UNSPECIFIED";
320
+ SdkId$1[SdkId$1["SDK_ID_JAVA_PROVIDER"] = 1] = "SDK_ID_JAVA_PROVIDER";
321
+ SdkId$1[SdkId$1["SDK_ID_KOTLIN_PROVIDER"] = 2] = "SDK_ID_KOTLIN_PROVIDER";
322
+ SdkId$1[SdkId$1["SDK_ID_SWIFT_PROVIDER"] = 3] = "SDK_ID_SWIFT_PROVIDER";
323
+ SdkId$1[SdkId$1["SDK_ID_JS_WEB_PROVIDER"] = 4] = "SDK_ID_JS_WEB_PROVIDER";
324
+ SdkId$1[SdkId$1["SDK_ID_JS_SERVER_PROVIDER"] = 5] = "SDK_ID_JS_SERVER_PROVIDER";
325
+ SdkId$1[SdkId$1["SDK_ID_PYTHON_PROVIDER"] = 6] = "SDK_ID_PYTHON_PROVIDER";
326
+ SdkId$1[SdkId$1["SDK_ID_GO_PROVIDER"] = 7] = "SDK_ID_GO_PROVIDER";
327
+ SdkId$1[SdkId$1["SDK_ID_RUBY_PROVIDER"] = 8] = "SDK_ID_RUBY_PROVIDER";
328
+ SdkId$1[SdkId$1["SDK_ID_RUST_PROVIDER"] = 9] = "SDK_ID_RUST_PROVIDER";
329
+ SdkId$1[SdkId$1["SDK_ID_JAVA_CONFIDENCE"] = 10] = "SDK_ID_JAVA_CONFIDENCE";
330
+ SdkId$1[SdkId$1["SDK_ID_KOTLIN_CONFIDENCE"] = 11] = "SDK_ID_KOTLIN_CONFIDENCE";
331
+ SdkId$1[SdkId$1["SDK_ID_SWIFT_CONFIDENCE"] = 12] = "SDK_ID_SWIFT_CONFIDENCE";
332
+ SdkId$1[SdkId$1["SDK_ID_JS_CONFIDENCE"] = 13] = "SDK_ID_JS_CONFIDENCE";
333
+ SdkId$1[SdkId$1["SDK_ID_PYTHON_CONFIDENCE"] = 14] = "SDK_ID_PYTHON_CONFIDENCE";
334
+ SdkId$1[SdkId$1["SDK_ID_GO_CONFIDENCE"] = 15] = "SDK_ID_GO_CONFIDENCE";
335
+ SdkId$1[SdkId$1["SDK_ID_RUST_CONFIDENCE"] = 16] = "SDK_ID_RUST_CONFIDENCE";
336
+ SdkId$1[SdkId$1["SDK_ID_FLUTTER_IOS_CONFIDENCE"] = 17] = "SDK_ID_FLUTTER_IOS_CONFIDENCE";
337
+ SdkId$1[SdkId$1["SDK_ID_FLUTTER_ANDROID_CONFIDENCE"] = 18] = "SDK_ID_FLUTTER_ANDROID_CONFIDENCE";
338
+ SdkId$1[SdkId$1["SDK_ID_DOTNET_CONFIDENCE"] = 19] = "SDK_ID_DOTNET_CONFIDENCE";
339
+ SdkId$1[SdkId$1["SDK_ID_GO_LOCAL_PROVIDER"] = 20] = "SDK_ID_GO_LOCAL_PROVIDER";
340
+ SdkId$1[SdkId$1["SDK_ID_JAVA_LOCAL_PROVIDER"] = 21] = "SDK_ID_JAVA_LOCAL_PROVIDER";
341
+ SdkId$1[SdkId$1["SDK_ID_JS_LOCAL_SERVER_PROVIDER"] = 22] = "SDK_ID_JS_LOCAL_SERVER_PROVIDER";
342
+ SdkId$1[SdkId$1["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
343
+ return SdkId$1;
344
+ }({});
345
+ function sdkIdFromJSON(object) {
346
+ switch (object) {
347
+ case 0:
348
+ case "SDK_ID_UNSPECIFIED": return SdkId.SDK_ID_UNSPECIFIED;
349
+ case 1:
350
+ case "SDK_ID_JAVA_PROVIDER": return SdkId.SDK_ID_JAVA_PROVIDER;
351
+ case 2:
352
+ case "SDK_ID_KOTLIN_PROVIDER": return SdkId.SDK_ID_KOTLIN_PROVIDER;
353
+ case 3:
354
+ case "SDK_ID_SWIFT_PROVIDER": return SdkId.SDK_ID_SWIFT_PROVIDER;
355
+ case 4:
356
+ case "SDK_ID_JS_WEB_PROVIDER": return SdkId.SDK_ID_JS_WEB_PROVIDER;
357
+ case 5:
358
+ case "SDK_ID_JS_SERVER_PROVIDER": return SdkId.SDK_ID_JS_SERVER_PROVIDER;
359
+ case 6:
360
+ case "SDK_ID_PYTHON_PROVIDER": return SdkId.SDK_ID_PYTHON_PROVIDER;
361
+ case 7:
362
+ case "SDK_ID_GO_PROVIDER": return SdkId.SDK_ID_GO_PROVIDER;
363
+ case 8:
364
+ case "SDK_ID_RUBY_PROVIDER": return SdkId.SDK_ID_RUBY_PROVIDER;
365
+ case 9:
366
+ case "SDK_ID_RUST_PROVIDER": return SdkId.SDK_ID_RUST_PROVIDER;
367
+ case 10:
368
+ case "SDK_ID_JAVA_CONFIDENCE": return SdkId.SDK_ID_JAVA_CONFIDENCE;
369
+ case 11:
370
+ case "SDK_ID_KOTLIN_CONFIDENCE": return SdkId.SDK_ID_KOTLIN_CONFIDENCE;
371
+ case 12:
372
+ case "SDK_ID_SWIFT_CONFIDENCE": return SdkId.SDK_ID_SWIFT_CONFIDENCE;
373
+ case 13:
374
+ case "SDK_ID_JS_CONFIDENCE": return SdkId.SDK_ID_JS_CONFIDENCE;
375
+ case 14:
376
+ case "SDK_ID_PYTHON_CONFIDENCE": return SdkId.SDK_ID_PYTHON_CONFIDENCE;
377
+ case 15:
378
+ case "SDK_ID_GO_CONFIDENCE": return SdkId.SDK_ID_GO_CONFIDENCE;
379
+ case 16:
380
+ case "SDK_ID_RUST_CONFIDENCE": return SdkId.SDK_ID_RUST_CONFIDENCE;
381
+ case 17:
382
+ case "SDK_ID_FLUTTER_IOS_CONFIDENCE": return SdkId.SDK_ID_FLUTTER_IOS_CONFIDENCE;
383
+ case 18:
384
+ case "SDK_ID_FLUTTER_ANDROID_CONFIDENCE": return SdkId.SDK_ID_FLUTTER_ANDROID_CONFIDENCE;
385
+ case 19:
386
+ case "SDK_ID_DOTNET_CONFIDENCE": return SdkId.SDK_ID_DOTNET_CONFIDENCE;
387
+ case 20:
388
+ case "SDK_ID_GO_LOCAL_PROVIDER": return SdkId.SDK_ID_GO_LOCAL_PROVIDER;
389
+ case 21:
390
+ case "SDK_ID_JAVA_LOCAL_PROVIDER": return SdkId.SDK_ID_JAVA_LOCAL_PROVIDER;
391
+ case 22:
392
+ case "SDK_ID_JS_LOCAL_SERVER_PROVIDER": return SdkId.SDK_ID_JS_LOCAL_SERVER_PROVIDER;
393
+ case -1:
394
+ case "UNRECOGNIZED":
395
+ default: return SdkId.UNRECOGNIZED;
396
+ }
397
+ }
398
+ function sdkIdToJSON(object) {
399
+ switch (object) {
400
+ case SdkId.SDK_ID_UNSPECIFIED: return "SDK_ID_UNSPECIFIED";
401
+ case SdkId.SDK_ID_JAVA_PROVIDER: return "SDK_ID_JAVA_PROVIDER";
402
+ case SdkId.SDK_ID_KOTLIN_PROVIDER: return "SDK_ID_KOTLIN_PROVIDER";
403
+ case SdkId.SDK_ID_SWIFT_PROVIDER: return "SDK_ID_SWIFT_PROVIDER";
404
+ case SdkId.SDK_ID_JS_WEB_PROVIDER: return "SDK_ID_JS_WEB_PROVIDER";
405
+ case SdkId.SDK_ID_JS_SERVER_PROVIDER: return "SDK_ID_JS_SERVER_PROVIDER";
406
+ case SdkId.SDK_ID_PYTHON_PROVIDER: return "SDK_ID_PYTHON_PROVIDER";
407
+ case SdkId.SDK_ID_GO_PROVIDER: return "SDK_ID_GO_PROVIDER";
408
+ case SdkId.SDK_ID_RUBY_PROVIDER: return "SDK_ID_RUBY_PROVIDER";
409
+ case SdkId.SDK_ID_RUST_PROVIDER: return "SDK_ID_RUST_PROVIDER";
410
+ case SdkId.SDK_ID_JAVA_CONFIDENCE: return "SDK_ID_JAVA_CONFIDENCE";
411
+ case SdkId.SDK_ID_KOTLIN_CONFIDENCE: return "SDK_ID_KOTLIN_CONFIDENCE";
412
+ case SdkId.SDK_ID_SWIFT_CONFIDENCE: return "SDK_ID_SWIFT_CONFIDENCE";
413
+ case SdkId.SDK_ID_JS_CONFIDENCE: return "SDK_ID_JS_CONFIDENCE";
414
+ case SdkId.SDK_ID_PYTHON_CONFIDENCE: return "SDK_ID_PYTHON_CONFIDENCE";
415
+ case SdkId.SDK_ID_GO_CONFIDENCE: return "SDK_ID_GO_CONFIDENCE";
416
+ case SdkId.SDK_ID_RUST_CONFIDENCE: return "SDK_ID_RUST_CONFIDENCE";
417
+ case SdkId.SDK_ID_FLUTTER_IOS_CONFIDENCE: return "SDK_ID_FLUTTER_IOS_CONFIDENCE";
418
+ case SdkId.SDK_ID_FLUTTER_ANDROID_CONFIDENCE: return "SDK_ID_FLUTTER_ANDROID_CONFIDENCE";
419
+ case SdkId.SDK_ID_DOTNET_CONFIDENCE: return "SDK_ID_DOTNET_CONFIDENCE";
420
+ case SdkId.SDK_ID_GO_LOCAL_PROVIDER: return "SDK_ID_GO_LOCAL_PROVIDER";
421
+ case SdkId.SDK_ID_JAVA_LOCAL_PROVIDER: return "SDK_ID_JAVA_LOCAL_PROVIDER";
422
+ case SdkId.SDK_ID_JS_LOCAL_SERVER_PROVIDER: return "SDK_ID_JS_LOCAL_SERVER_PROVIDER";
423
+ case SdkId.UNRECOGNIZED:
424
+ default: return "UNRECOGNIZED";
425
+ }
426
+ }
318
427
  let ResolveReason = /* @__PURE__ */ function(ResolveReason$1) {
319
428
  ResolveReason$1[ResolveReason$1["RESOLVE_REASON_UNSPECIFIED"] = 0] = "RESOLVE_REASON_UNSPECIFIED";
320
429
  ResolveReason$1[ResolveReason$1["RESOLVE_REASON_MATCH"] = 1] = "RESOLVE_REASON_MATCH";
@@ -360,12 +469,77 @@ function resolveReasonToJSON(object) {
360
469
  default: return "UNRECOGNIZED";
361
470
  }
362
471
  }
472
+ function createBaseSdk() {
473
+ return {
474
+ id: void 0,
475
+ customId: void 0,
476
+ version: ""
477
+ };
478
+ }
479
+ const Sdk = {
480
+ encode(message, writer = new BinaryWriter()) {
481
+ if (message.id !== void 0) writer.uint32(8).int32(message.id);
482
+ if (message.customId !== void 0) writer.uint32(18).string(message.customId);
483
+ if (message.version !== "") writer.uint32(26).string(message.version);
484
+ return writer;
485
+ },
486
+ decode(input, length) {
487
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
488
+ const end = length === void 0 ? reader.len : reader.pos + length;
489
+ const message = createBaseSdk();
490
+ while (reader.pos < end) {
491
+ const tag = reader.uint32();
492
+ switch (tag >>> 3) {
493
+ case 1:
494
+ if (tag !== 8) break;
495
+ message.id = reader.int32();
496
+ continue;
497
+ case 2:
498
+ if (tag !== 18) break;
499
+ message.customId = reader.string();
500
+ continue;
501
+ case 3:
502
+ if (tag !== 26) break;
503
+ message.version = reader.string();
504
+ continue;
505
+ }
506
+ if ((tag & 7) === 4 || tag === 0) break;
507
+ reader.skip(tag & 7);
508
+ }
509
+ return message;
510
+ },
511
+ fromJSON(object) {
512
+ return {
513
+ id: isSet$2(object.id) ? sdkIdFromJSON(object.id) : void 0,
514
+ customId: isSet$2(object.customId) ? globalThis.String(object.customId) : void 0,
515
+ version: isSet$2(object.version) ? globalThis.String(object.version) : ""
516
+ };
517
+ },
518
+ toJSON(message) {
519
+ const obj = {};
520
+ if (message.id !== void 0) obj.id = sdkIdToJSON(message.id);
521
+ if (message.customId !== void 0) obj.customId = message.customId;
522
+ if (message.version !== "") obj.version = message.version;
523
+ return obj;
524
+ },
525
+ create(base) {
526
+ return Sdk.fromPartial(base ?? {});
527
+ },
528
+ fromPartial(object) {
529
+ const message = createBaseSdk();
530
+ message.id = object.id ?? void 0;
531
+ message.customId = object.customId ?? void 0;
532
+ message.version = object.version ?? "";
533
+ return message;
534
+ }
535
+ };
363
536
  function createBaseResolveFlagsRequest() {
364
537
  return {
365
538
  flags: [],
366
539
  evaluationContext: void 0,
367
540
  clientSecret: "",
368
- apply: false
541
+ apply: false,
542
+ sdk: void 0
369
543
  };
370
544
  }
371
545
  const ResolveFlagsRequest = {
@@ -374,6 +548,7 @@ const ResolveFlagsRequest = {
374
548
  if (message.evaluationContext !== void 0) Struct.encode(Struct.wrap(message.evaluationContext), writer.uint32(18).fork()).join();
375
549
  if (message.clientSecret !== "") writer.uint32(26).string(message.clientSecret);
376
550
  if (message.apply !== false) writer.uint32(32).bool(message.apply);
551
+ if (message.sdk !== void 0) Sdk.encode(message.sdk, writer.uint32(42).fork()).join();
377
552
  return writer;
378
553
  },
379
554
  decode(input, length) {
@@ -399,6 +574,10 @@ const ResolveFlagsRequest = {
399
574
  if (tag !== 32) break;
400
575
  message.apply = reader.bool();
401
576
  continue;
577
+ case 5:
578
+ if (tag !== 42) break;
579
+ message.sdk = Sdk.decode(reader, reader.uint32());
580
+ continue;
402
581
  }
403
582
  if ((tag & 7) === 4 || tag === 0) break;
404
583
  reader.skip(tag & 7);
@@ -410,7 +589,8 @@ const ResolveFlagsRequest = {
410
589
  flags: globalThis.Array.isArray(object?.flags) ? object.flags.map((e) => globalThis.String(e)) : [],
411
590
  evaluationContext: isObject(object.evaluationContext) ? object.evaluationContext : void 0,
412
591
  clientSecret: isSet$2(object.clientSecret) ? globalThis.String(object.clientSecret) : "",
413
- apply: isSet$2(object.apply) ? globalThis.Boolean(object.apply) : false
592
+ apply: isSet$2(object.apply) ? globalThis.Boolean(object.apply) : false,
593
+ sdk: isSet$2(object.sdk) ? Sdk.fromJSON(object.sdk) : void 0
414
594
  };
415
595
  },
416
596
  toJSON(message) {
@@ -419,6 +599,7 @@ const ResolveFlagsRequest = {
419
599
  if (message.evaluationContext !== void 0) obj.evaluationContext = message.evaluationContext;
420
600
  if (message.clientSecret !== "") obj.clientSecret = message.clientSecret;
421
601
  if (message.apply !== false) obj.apply = message.apply;
602
+ if (message.sdk !== void 0) obj.sdk = Sdk.toJSON(message.sdk);
422
603
  return obj;
423
604
  },
424
605
  create(base) {
@@ -430,6 +611,7 @@ const ResolveFlagsRequest = {
430
611
  message.evaluationContext = object.evaluationContext ?? void 0;
431
612
  message.clientSecret = object.clientSecret ?? "";
432
613
  message.apply = object.apply ?? false;
614
+ message.sdk = object.sdk !== void 0 && object.sdk !== null ? Sdk.fromPartial(object.sdk) : void 0;
433
615
  return message;
434
616
  }
435
617
  };
@@ -1328,6 +1510,7 @@ function isObject(value) {
1328
1510
  function isSet$2(value) {
1329
1511
  return value !== null && value !== void 0;
1330
1512
  }
1513
+ const VERSION = "0.2.0";
1331
1514
  const NOOP_LOG_FN = () => {};
1332
1515
  const debugBackend = loadDebug();
1333
1516
  const logger$1 = new class LoggerImpl {
@@ -1700,7 +1883,7 @@ var ConfidenceServerProviderLocal = class ConfidenceServerProviderLocal {
1700
1883
  baseInterval: 500,
1701
1884
  maxInterval: DEFAULT_STATE_INTERVAL
1702
1885
  }), withStallTimeout(500)],
1703
- "https://flags.confidence.dev/*|https://resolver.confidence.dev/*": [withConfidenceAuth, withRouter({
1886
+ "https://resolver.confidence.dev/*": [withConfidenceAuth, withRouter({
1704
1887
  "*/v1/resolverState:resolverStateUri": [withFastRetry],
1705
1888
  "*/v1/flags:resolve": [withRetry({
1706
1889
  maxAttempts: 3,
@@ -1743,7 +1926,11 @@ var ConfidenceServerProviderLocal = class ConfidenceServerProviderLocal {
1743
1926
  flags: [`flags/${flagName}`],
1744
1927
  evaluationContext: ConfidenceServerProviderLocal.convertEvaluationContext(context),
1745
1928
  apply: true,
1746
- clientSecret: this.options.flagClientSecret
1929
+ clientSecret: this.options.flagClientSecret,
1930
+ sdk: {
1931
+ id: SdkId.SDK_ID_JS_LOCAL_SERVER_PROVIDER,
1932
+ version: VERSION
1933
+ }
1747
1934
  },
1748
1935
  materializationsPerUnit: {},
1749
1936
  failFastOnSticky: true
@@ -1828,7 +2015,7 @@ var ConfidenceServerProviderLocal = class ConfidenceServerProviderLocal {
1828
2015
  });
1829
2016
  }
1830
2017
  async fetchResolveStateUri(signal) {
1831
- const resp = await this.fetch("https://flags.confidence.dev/v1/resolverState:resolverStateUri", { signal });
2018
+ const resp = await this.fetch("https://resolver.confidence.dev/v1/resolverState:resolverStateUri", { signal });
1832
2019
  if (!resp.ok) throw new Error("Failed to get resolve state url");
1833
2020
  return resp.json();
1834
2021
  }
@@ -2,6 +2,32 @@ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
2
  import { EvaluationContext, JsonValue, Provider, ProviderMetadata, ProviderStatus, ResolutionDetails } from "@openfeature/server-sdk";
3
3
 
4
4
  //#region src/proto/api.d.ts
5
+ declare enum SdkId {
6
+ SDK_ID_UNSPECIFIED = 0,
7
+ SDK_ID_JAVA_PROVIDER = 1,
8
+ SDK_ID_KOTLIN_PROVIDER = 2,
9
+ SDK_ID_SWIFT_PROVIDER = 3,
10
+ SDK_ID_JS_WEB_PROVIDER = 4,
11
+ SDK_ID_JS_SERVER_PROVIDER = 5,
12
+ SDK_ID_PYTHON_PROVIDER = 6,
13
+ SDK_ID_GO_PROVIDER = 7,
14
+ SDK_ID_RUBY_PROVIDER = 8,
15
+ SDK_ID_RUST_PROVIDER = 9,
16
+ SDK_ID_JAVA_CONFIDENCE = 10,
17
+ SDK_ID_KOTLIN_CONFIDENCE = 11,
18
+ SDK_ID_SWIFT_CONFIDENCE = 12,
19
+ SDK_ID_JS_CONFIDENCE = 13,
20
+ SDK_ID_PYTHON_CONFIDENCE = 14,
21
+ SDK_ID_GO_CONFIDENCE = 15,
22
+ SDK_ID_RUST_CONFIDENCE = 16,
23
+ SDK_ID_FLUTTER_IOS_CONFIDENCE = 17,
24
+ SDK_ID_FLUTTER_ANDROID_CONFIDENCE = 18,
25
+ SDK_ID_DOTNET_CONFIDENCE = 19,
26
+ SDK_ID_GO_LOCAL_PROVIDER = 20,
27
+ SDK_ID_JAVA_LOCAL_PROVIDER = 21,
28
+ SDK_ID_JS_LOCAL_SERVER_PROVIDER = 22,
29
+ UNRECOGNIZED = -1,
30
+ }
5
31
  declare enum ResolveReason {
6
32
  /** RESOLVE_REASON_UNSPECIFIED - Unspecified enum. */
7
33
  RESOLVE_REASON_UNSPECIFIED = 0,
@@ -24,6 +50,11 @@ declare enum ResolveReason {
24
50
  RESOLVE_REASON_ERROR = 6,
25
51
  UNRECOGNIZED = -1,
26
52
  }
53
+ interface Sdk {
54
+ id?: SdkId | undefined;
55
+ customId?: string | undefined;
56
+ version: string;
57
+ }
27
58
  interface ResolveFlagsRequest {
28
59
  /**
29
60
  * If non-empty, the specific flags are resolved, otherwise all flags
@@ -50,6 +81,8 @@ interface ResolveFlagsRequest {
50
81
  * `apply` should likely be set to false.
51
82
  */
52
83
  apply: boolean;
84
+ /** Information about the SDK used to initiate the request. */
85
+ sdk?: Sdk | undefined;
53
86
  }
54
87
  interface ResolveFlagsResponse {
55
88
  /**
@@ -143,6 +176,7 @@ interface ResolveWithStickyResponse_MaterializationUpdate {
143
176
  rule: string;
144
177
  variant: string;
145
178
  }
179
+ declare const Sdk: MessageFns<Sdk>;
146
180
  declare const ResolveFlagsRequest: MessageFns<ResolveFlagsRequest>;
147
181
  declare const ResolveFlagsResponse: MessageFns<ResolveFlagsResponse>;
148
182
  declare const ResolvedFlag: MessageFns<ResolvedFlag>;
@@ -318,6 +318,115 @@ function isObject$1(value) {
318
318
  function isSet$3(value) {
319
319
  return value !== null && value !== void 0;
320
320
  }
321
+ let SdkId = /* @__PURE__ */ function(SdkId$1) {
322
+ SdkId$1[SdkId$1["SDK_ID_UNSPECIFIED"] = 0] = "SDK_ID_UNSPECIFIED";
323
+ SdkId$1[SdkId$1["SDK_ID_JAVA_PROVIDER"] = 1] = "SDK_ID_JAVA_PROVIDER";
324
+ SdkId$1[SdkId$1["SDK_ID_KOTLIN_PROVIDER"] = 2] = "SDK_ID_KOTLIN_PROVIDER";
325
+ SdkId$1[SdkId$1["SDK_ID_SWIFT_PROVIDER"] = 3] = "SDK_ID_SWIFT_PROVIDER";
326
+ SdkId$1[SdkId$1["SDK_ID_JS_WEB_PROVIDER"] = 4] = "SDK_ID_JS_WEB_PROVIDER";
327
+ SdkId$1[SdkId$1["SDK_ID_JS_SERVER_PROVIDER"] = 5] = "SDK_ID_JS_SERVER_PROVIDER";
328
+ SdkId$1[SdkId$1["SDK_ID_PYTHON_PROVIDER"] = 6] = "SDK_ID_PYTHON_PROVIDER";
329
+ SdkId$1[SdkId$1["SDK_ID_GO_PROVIDER"] = 7] = "SDK_ID_GO_PROVIDER";
330
+ SdkId$1[SdkId$1["SDK_ID_RUBY_PROVIDER"] = 8] = "SDK_ID_RUBY_PROVIDER";
331
+ SdkId$1[SdkId$1["SDK_ID_RUST_PROVIDER"] = 9] = "SDK_ID_RUST_PROVIDER";
332
+ SdkId$1[SdkId$1["SDK_ID_JAVA_CONFIDENCE"] = 10] = "SDK_ID_JAVA_CONFIDENCE";
333
+ SdkId$1[SdkId$1["SDK_ID_KOTLIN_CONFIDENCE"] = 11] = "SDK_ID_KOTLIN_CONFIDENCE";
334
+ SdkId$1[SdkId$1["SDK_ID_SWIFT_CONFIDENCE"] = 12] = "SDK_ID_SWIFT_CONFIDENCE";
335
+ SdkId$1[SdkId$1["SDK_ID_JS_CONFIDENCE"] = 13] = "SDK_ID_JS_CONFIDENCE";
336
+ SdkId$1[SdkId$1["SDK_ID_PYTHON_CONFIDENCE"] = 14] = "SDK_ID_PYTHON_CONFIDENCE";
337
+ SdkId$1[SdkId$1["SDK_ID_GO_CONFIDENCE"] = 15] = "SDK_ID_GO_CONFIDENCE";
338
+ SdkId$1[SdkId$1["SDK_ID_RUST_CONFIDENCE"] = 16] = "SDK_ID_RUST_CONFIDENCE";
339
+ SdkId$1[SdkId$1["SDK_ID_FLUTTER_IOS_CONFIDENCE"] = 17] = "SDK_ID_FLUTTER_IOS_CONFIDENCE";
340
+ SdkId$1[SdkId$1["SDK_ID_FLUTTER_ANDROID_CONFIDENCE"] = 18] = "SDK_ID_FLUTTER_ANDROID_CONFIDENCE";
341
+ SdkId$1[SdkId$1["SDK_ID_DOTNET_CONFIDENCE"] = 19] = "SDK_ID_DOTNET_CONFIDENCE";
342
+ SdkId$1[SdkId$1["SDK_ID_GO_LOCAL_PROVIDER"] = 20] = "SDK_ID_GO_LOCAL_PROVIDER";
343
+ SdkId$1[SdkId$1["SDK_ID_JAVA_LOCAL_PROVIDER"] = 21] = "SDK_ID_JAVA_LOCAL_PROVIDER";
344
+ SdkId$1[SdkId$1["SDK_ID_JS_LOCAL_SERVER_PROVIDER"] = 22] = "SDK_ID_JS_LOCAL_SERVER_PROVIDER";
345
+ SdkId$1[SdkId$1["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
346
+ return SdkId$1;
347
+ }({});
348
+ function sdkIdFromJSON(object) {
349
+ switch (object) {
350
+ case 0:
351
+ case "SDK_ID_UNSPECIFIED": return SdkId.SDK_ID_UNSPECIFIED;
352
+ case 1:
353
+ case "SDK_ID_JAVA_PROVIDER": return SdkId.SDK_ID_JAVA_PROVIDER;
354
+ case 2:
355
+ case "SDK_ID_KOTLIN_PROVIDER": return SdkId.SDK_ID_KOTLIN_PROVIDER;
356
+ case 3:
357
+ case "SDK_ID_SWIFT_PROVIDER": return SdkId.SDK_ID_SWIFT_PROVIDER;
358
+ case 4:
359
+ case "SDK_ID_JS_WEB_PROVIDER": return SdkId.SDK_ID_JS_WEB_PROVIDER;
360
+ case 5:
361
+ case "SDK_ID_JS_SERVER_PROVIDER": return SdkId.SDK_ID_JS_SERVER_PROVIDER;
362
+ case 6:
363
+ case "SDK_ID_PYTHON_PROVIDER": return SdkId.SDK_ID_PYTHON_PROVIDER;
364
+ case 7:
365
+ case "SDK_ID_GO_PROVIDER": return SdkId.SDK_ID_GO_PROVIDER;
366
+ case 8:
367
+ case "SDK_ID_RUBY_PROVIDER": return SdkId.SDK_ID_RUBY_PROVIDER;
368
+ case 9:
369
+ case "SDK_ID_RUST_PROVIDER": return SdkId.SDK_ID_RUST_PROVIDER;
370
+ case 10:
371
+ case "SDK_ID_JAVA_CONFIDENCE": return SdkId.SDK_ID_JAVA_CONFIDENCE;
372
+ case 11:
373
+ case "SDK_ID_KOTLIN_CONFIDENCE": return SdkId.SDK_ID_KOTLIN_CONFIDENCE;
374
+ case 12:
375
+ case "SDK_ID_SWIFT_CONFIDENCE": return SdkId.SDK_ID_SWIFT_CONFIDENCE;
376
+ case 13:
377
+ case "SDK_ID_JS_CONFIDENCE": return SdkId.SDK_ID_JS_CONFIDENCE;
378
+ case 14:
379
+ case "SDK_ID_PYTHON_CONFIDENCE": return SdkId.SDK_ID_PYTHON_CONFIDENCE;
380
+ case 15:
381
+ case "SDK_ID_GO_CONFIDENCE": return SdkId.SDK_ID_GO_CONFIDENCE;
382
+ case 16:
383
+ case "SDK_ID_RUST_CONFIDENCE": return SdkId.SDK_ID_RUST_CONFIDENCE;
384
+ case 17:
385
+ case "SDK_ID_FLUTTER_IOS_CONFIDENCE": return SdkId.SDK_ID_FLUTTER_IOS_CONFIDENCE;
386
+ case 18:
387
+ case "SDK_ID_FLUTTER_ANDROID_CONFIDENCE": return SdkId.SDK_ID_FLUTTER_ANDROID_CONFIDENCE;
388
+ case 19:
389
+ case "SDK_ID_DOTNET_CONFIDENCE": return SdkId.SDK_ID_DOTNET_CONFIDENCE;
390
+ case 20:
391
+ case "SDK_ID_GO_LOCAL_PROVIDER": return SdkId.SDK_ID_GO_LOCAL_PROVIDER;
392
+ case 21:
393
+ case "SDK_ID_JAVA_LOCAL_PROVIDER": return SdkId.SDK_ID_JAVA_LOCAL_PROVIDER;
394
+ case 22:
395
+ case "SDK_ID_JS_LOCAL_SERVER_PROVIDER": return SdkId.SDK_ID_JS_LOCAL_SERVER_PROVIDER;
396
+ case -1:
397
+ case "UNRECOGNIZED":
398
+ default: return SdkId.UNRECOGNIZED;
399
+ }
400
+ }
401
+ function sdkIdToJSON(object) {
402
+ switch (object) {
403
+ case SdkId.SDK_ID_UNSPECIFIED: return "SDK_ID_UNSPECIFIED";
404
+ case SdkId.SDK_ID_JAVA_PROVIDER: return "SDK_ID_JAVA_PROVIDER";
405
+ case SdkId.SDK_ID_KOTLIN_PROVIDER: return "SDK_ID_KOTLIN_PROVIDER";
406
+ case SdkId.SDK_ID_SWIFT_PROVIDER: return "SDK_ID_SWIFT_PROVIDER";
407
+ case SdkId.SDK_ID_JS_WEB_PROVIDER: return "SDK_ID_JS_WEB_PROVIDER";
408
+ case SdkId.SDK_ID_JS_SERVER_PROVIDER: return "SDK_ID_JS_SERVER_PROVIDER";
409
+ case SdkId.SDK_ID_PYTHON_PROVIDER: return "SDK_ID_PYTHON_PROVIDER";
410
+ case SdkId.SDK_ID_GO_PROVIDER: return "SDK_ID_GO_PROVIDER";
411
+ case SdkId.SDK_ID_RUBY_PROVIDER: return "SDK_ID_RUBY_PROVIDER";
412
+ case SdkId.SDK_ID_RUST_PROVIDER: return "SDK_ID_RUST_PROVIDER";
413
+ case SdkId.SDK_ID_JAVA_CONFIDENCE: return "SDK_ID_JAVA_CONFIDENCE";
414
+ case SdkId.SDK_ID_KOTLIN_CONFIDENCE: return "SDK_ID_KOTLIN_CONFIDENCE";
415
+ case SdkId.SDK_ID_SWIFT_CONFIDENCE: return "SDK_ID_SWIFT_CONFIDENCE";
416
+ case SdkId.SDK_ID_JS_CONFIDENCE: return "SDK_ID_JS_CONFIDENCE";
417
+ case SdkId.SDK_ID_PYTHON_CONFIDENCE: return "SDK_ID_PYTHON_CONFIDENCE";
418
+ case SdkId.SDK_ID_GO_CONFIDENCE: return "SDK_ID_GO_CONFIDENCE";
419
+ case SdkId.SDK_ID_RUST_CONFIDENCE: return "SDK_ID_RUST_CONFIDENCE";
420
+ case SdkId.SDK_ID_FLUTTER_IOS_CONFIDENCE: return "SDK_ID_FLUTTER_IOS_CONFIDENCE";
421
+ case SdkId.SDK_ID_FLUTTER_ANDROID_CONFIDENCE: return "SDK_ID_FLUTTER_ANDROID_CONFIDENCE";
422
+ case SdkId.SDK_ID_DOTNET_CONFIDENCE: return "SDK_ID_DOTNET_CONFIDENCE";
423
+ case SdkId.SDK_ID_GO_LOCAL_PROVIDER: return "SDK_ID_GO_LOCAL_PROVIDER";
424
+ case SdkId.SDK_ID_JAVA_LOCAL_PROVIDER: return "SDK_ID_JAVA_LOCAL_PROVIDER";
425
+ case SdkId.SDK_ID_JS_LOCAL_SERVER_PROVIDER: return "SDK_ID_JS_LOCAL_SERVER_PROVIDER";
426
+ case SdkId.UNRECOGNIZED:
427
+ default: return "UNRECOGNIZED";
428
+ }
429
+ }
321
430
  let ResolveReason = /* @__PURE__ */ function(ResolveReason$1) {
322
431
  ResolveReason$1[ResolveReason$1["RESOLVE_REASON_UNSPECIFIED"] = 0] = "RESOLVE_REASON_UNSPECIFIED";
323
432
  ResolveReason$1[ResolveReason$1["RESOLVE_REASON_MATCH"] = 1] = "RESOLVE_REASON_MATCH";
@@ -363,12 +472,77 @@ function resolveReasonToJSON(object) {
363
472
  default: return "UNRECOGNIZED";
364
473
  }
365
474
  }
475
+ function createBaseSdk() {
476
+ return {
477
+ id: void 0,
478
+ customId: void 0,
479
+ version: ""
480
+ };
481
+ }
482
+ const Sdk = {
483
+ encode(message, writer = new BinaryWriter()) {
484
+ if (message.id !== void 0) writer.uint32(8).int32(message.id);
485
+ if (message.customId !== void 0) writer.uint32(18).string(message.customId);
486
+ if (message.version !== "") writer.uint32(26).string(message.version);
487
+ return writer;
488
+ },
489
+ decode(input, length) {
490
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
491
+ const end = length === void 0 ? reader.len : reader.pos + length;
492
+ const message = createBaseSdk();
493
+ while (reader.pos < end) {
494
+ const tag = reader.uint32();
495
+ switch (tag >>> 3) {
496
+ case 1:
497
+ if (tag !== 8) break;
498
+ message.id = reader.int32();
499
+ continue;
500
+ case 2:
501
+ if (tag !== 18) break;
502
+ message.customId = reader.string();
503
+ continue;
504
+ case 3:
505
+ if (tag !== 26) break;
506
+ message.version = reader.string();
507
+ continue;
508
+ }
509
+ if ((tag & 7) === 4 || tag === 0) break;
510
+ reader.skip(tag & 7);
511
+ }
512
+ return message;
513
+ },
514
+ fromJSON(object) {
515
+ return {
516
+ id: isSet$2(object.id) ? sdkIdFromJSON(object.id) : void 0,
517
+ customId: isSet$2(object.customId) ? globalThis.String(object.customId) : void 0,
518
+ version: isSet$2(object.version) ? globalThis.String(object.version) : ""
519
+ };
520
+ },
521
+ toJSON(message) {
522
+ const obj = {};
523
+ if (message.id !== void 0) obj.id = sdkIdToJSON(message.id);
524
+ if (message.customId !== void 0) obj.customId = message.customId;
525
+ if (message.version !== "") obj.version = message.version;
526
+ return obj;
527
+ },
528
+ create(base) {
529
+ return Sdk.fromPartial(base ?? {});
530
+ },
531
+ fromPartial(object) {
532
+ const message = createBaseSdk();
533
+ message.id = object.id ?? void 0;
534
+ message.customId = object.customId ?? void 0;
535
+ message.version = object.version ?? "";
536
+ return message;
537
+ }
538
+ };
366
539
  function createBaseResolveFlagsRequest() {
367
540
  return {
368
541
  flags: [],
369
542
  evaluationContext: void 0,
370
543
  clientSecret: "",
371
- apply: false
544
+ apply: false,
545
+ sdk: void 0
372
546
  };
373
547
  }
374
548
  const ResolveFlagsRequest = {
@@ -377,6 +551,7 @@ const ResolveFlagsRequest = {
377
551
  if (message.evaluationContext !== void 0) Struct.encode(Struct.wrap(message.evaluationContext), writer.uint32(18).fork()).join();
378
552
  if (message.clientSecret !== "") writer.uint32(26).string(message.clientSecret);
379
553
  if (message.apply !== false) writer.uint32(32).bool(message.apply);
554
+ if (message.sdk !== void 0) Sdk.encode(message.sdk, writer.uint32(42).fork()).join();
380
555
  return writer;
381
556
  },
382
557
  decode(input, length) {
@@ -402,6 +577,10 @@ const ResolveFlagsRequest = {
402
577
  if (tag !== 32) break;
403
578
  message.apply = reader.bool();
404
579
  continue;
580
+ case 5:
581
+ if (tag !== 42) break;
582
+ message.sdk = Sdk.decode(reader, reader.uint32());
583
+ continue;
405
584
  }
406
585
  if ((tag & 7) === 4 || tag === 0) break;
407
586
  reader.skip(tag & 7);
@@ -413,7 +592,8 @@ const ResolveFlagsRequest = {
413
592
  flags: globalThis.Array.isArray(object?.flags) ? object.flags.map((e) => globalThis.String(e)) : [],
414
593
  evaluationContext: isObject(object.evaluationContext) ? object.evaluationContext : void 0,
415
594
  clientSecret: isSet$2(object.clientSecret) ? globalThis.String(object.clientSecret) : "",
416
- apply: isSet$2(object.apply) ? globalThis.Boolean(object.apply) : false
595
+ apply: isSet$2(object.apply) ? globalThis.Boolean(object.apply) : false,
596
+ sdk: isSet$2(object.sdk) ? Sdk.fromJSON(object.sdk) : void 0
417
597
  };
418
598
  },
419
599
  toJSON(message) {
@@ -422,6 +602,7 @@ const ResolveFlagsRequest = {
422
602
  if (message.evaluationContext !== void 0) obj.evaluationContext = message.evaluationContext;
423
603
  if (message.clientSecret !== "") obj.clientSecret = message.clientSecret;
424
604
  if (message.apply !== false) obj.apply = message.apply;
605
+ if (message.sdk !== void 0) obj.sdk = Sdk.toJSON(message.sdk);
425
606
  return obj;
426
607
  },
427
608
  create(base) {
@@ -433,6 +614,7 @@ const ResolveFlagsRequest = {
433
614
  message.evaluationContext = object.evaluationContext ?? void 0;
434
615
  message.clientSecret = object.clientSecret ?? "";
435
616
  message.apply = object.apply ?? false;
617
+ message.sdk = object.sdk !== void 0 && object.sdk !== null ? Sdk.fromPartial(object.sdk) : void 0;
436
618
  return message;
437
619
  }
438
620
  };
@@ -1331,6 +1513,7 @@ function isObject(value) {
1331
1513
  function isSet$2(value) {
1332
1514
  return value !== null && value !== void 0;
1333
1515
  }
1516
+ const VERSION = "0.2.0";
1334
1517
  const NOOP_LOG_FN = () => {};
1335
1518
  const debugBackend = loadDebug();
1336
1519
  const logger$1 = new class LoggerImpl {
@@ -1703,7 +1886,7 @@ var ConfidenceServerProviderLocal = class ConfidenceServerProviderLocal {
1703
1886
  baseInterval: 500,
1704
1887
  maxInterval: DEFAULT_STATE_INTERVAL
1705
1888
  }), withStallTimeout(500)],
1706
- "https://flags.confidence.dev/*|https://resolver.confidence.dev/*": [withConfidenceAuth, withRouter({
1889
+ "https://resolver.confidence.dev/*": [withConfidenceAuth, withRouter({
1707
1890
  "*/v1/resolverState:resolverStateUri": [withFastRetry],
1708
1891
  "*/v1/flags:resolve": [withRetry({
1709
1892
  maxAttempts: 3,
@@ -1746,7 +1929,11 @@ var ConfidenceServerProviderLocal = class ConfidenceServerProviderLocal {
1746
1929
  flags: [`flags/${flagName}`],
1747
1930
  evaluationContext: ConfidenceServerProviderLocal.convertEvaluationContext(context),
1748
1931
  apply: true,
1749
- clientSecret: this.options.flagClientSecret
1932
+ clientSecret: this.options.flagClientSecret,
1933
+ sdk: {
1934
+ id: SdkId.SDK_ID_JS_LOCAL_SERVER_PROVIDER,
1935
+ version: VERSION
1936
+ }
1750
1937
  },
1751
1938
  materializationsPerUnit: {},
1752
1939
  failFastOnSticky: true
@@ -1831,7 +2018,7 @@ var ConfidenceServerProviderLocal = class ConfidenceServerProviderLocal {
1831
2018
  });
1832
2019
  }
1833
2020
  async fetchResolveStateUri(signal) {
1834
- const resp = await this.fetch("https://flags.confidence.dev/v1/resolverState:resolverStateUri", { signal });
2021
+ const resp = await this.fetch("https://resolver.confidence.dev/v1/resolverState:resolverStateUri", { signal });
1835
2022
  if (!resp.ok) throw new Error("Failed to get resolve state url");
1836
2023
  return resp.json();
1837
2024
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spotify-confidence/openfeature-server-provider-local",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Spotify Confidence Open Feature provider",
5
5
  "type": "module",
6
6
  "files": [
@@ -32,6 +32,8 @@
32
32
  "scripts": {
33
33
  "build": "tsdown",
34
34
  "dev": "tsdown --watch",
35
+ "format": "prettier --config prettier.config.cjs -w .",
36
+ "format:check": "prettier --config prettier.config.cjs -c .",
35
37
  "test": "vitest",
36
38
  "proto:gen": "rm -rf src/proto && mkdir -p src/proto && protoc --plugin=node_modules/.bin/protoc-gen-ts_proto --ts_proto_opt useOptionals=messages --ts_proto_opt esModuleInterop=true --ts_proto_out src/proto -Iproto api.proto messages.proto test-only.proto"
37
39
  },
@@ -41,11 +43,13 @@
41
43
  "devDependencies": {
42
44
  "@openfeature/core": "^1.9.0",
43
45
  "@openfeature/server-sdk": "^1.19.0",
46
+ "@spotify/prettier-config": "^15.0.0",
44
47
  "@types/debug": "^4",
45
48
  "@types/node": "^24.0.1",
46
49
  "@vitest/coverage-v8": "^3.2.4",
47
50
  "debug": "^4.4.3",
48
51
  "dotenv": "^17.2.2",
52
+ "prettier": "^2.8.8",
49
53
  "rolldown": "1.0.0-beta.38",
50
54
  "ts-proto": "^2.7.3",
51
55
  "tsdown": "latest",
@@ -62,7 +66,7 @@
62
66
  "packageManager": "yarn@4.6.0",
63
67
  "repository": {
64
68
  "type": "git",
65
- "url": "https://github.com/spotify/confidence-resolver-rust",
69
+ "url": "https://github.com/spotify/confidence-resolver",
66
70
  "directory": "openfeature-provider/js"
67
71
  },
68
72
  "license": "Apache-2.0",
@@ -76,7 +80,7 @@
76
80
  ],
77
81
  "author": "Spotify",
78
82
  "bugs": {
79
- "url": "https://github.com/spotify/confidence-resolver-rust/issues"
83
+ "url": "https://github.com/spotify/confidence-resolver/issues"
80
84
  },
81
- "homepage": "https://github.com/spotify/confidence-resolver-rust?tab=readme-ov-file#confidence-rust-flags-resolver"
85
+ "homepage": "https://github.com/spotify/confidence-resolver?tab=readme-ov-file#confidence-rust-flags-resolver"
82
86
  }