@lokalise/connector-shell 2.3.0 → 2.4.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/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # @lokalise/connector-shell
2
-
2
+
3
3
  A drop-in module for [opinionated-machine](https://github.com/lokalise/opinionated-machine) services that provides the connector shell infrastructure for Lokalise Content Engine connectors.
4
4
 
5
5
  This package provides the generic connector shell with all standard controllers (Auth, Cache, Env, ItemList, ItemGroup, Publish, Translate) and routing logic. It's designed to work with any set of adapters through automatic adapter discovery via dependency injection tags.
@@ -23,6 +23,15 @@ export declare class EnvController extends AbstractController<EnvControllerContr
23
23
  metadataFields: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
24
24
  type: import("zod").ZodEnum<{
25
25
  FOLDER_HIERARCHY: "FOLDER_HIERARCHY";
26
+ TAGS: "TAGS";
27
+ }>;
28
+ }, import("zod/v4/core").$strip>>>;
29
+ fieldDefinitions: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
30
+ id: import("zod").ZodString;
31
+ title: import("zod").ZodString;
32
+ type: import("zod").ZodEnum<{
33
+ STRING: "STRING";
34
+ DATE: "DATE";
26
35
  }>;
27
36
  }, import("zod/v4/core").$strip>>>;
28
37
  }, import("zod/v4/core").$strip>, undefined, import("zod").ZodObject<{
@@ -51,6 +60,15 @@ export declare class EnvController extends AbstractController<EnvControllerContr
51
60
  metadataFields: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
52
61
  type: import("zod").ZodEnum<{
53
62
  FOLDER_HIERARCHY: "FOLDER_HIERARCHY";
63
+ TAGS: "TAGS";
64
+ }>;
65
+ }, import("zod/v4/core").$strip>>>;
66
+ fieldDefinitions: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
67
+ id: import("zod").ZodString;
68
+ title: import("zod").ZodString;
69
+ type: import("zod").ZodEnum<{
70
+ STRING: "STRING";
71
+ DATE: "DATE";
54
72
  }>;
55
73
  }, import("zod/v4/core").$strip>>>;
56
74
  }, import("zod/v4/core").$strip>;
@@ -20,10 +20,12 @@ export class EnvController extends AbstractController {
20
20
  const localeData = await adapter.envService.getLocales(req.integrationConfig, req.authConfig, req.reqContext, req.query.defaultLocale);
21
21
  const cacheItemStructure = await adapter.envService.getCacheItemStructure(req.integrationConfig, req.authConfig, req.reqContext);
22
22
  const metadataFields = (await adapter.envService.getMetadataFields?.()) ?? {};
23
+ const fieldDefinitions = (await adapter.envService.getFieldDefinitions?.()) ?? [];
23
24
  await reply.send({
24
25
  ...localeData,
25
26
  cacheItemStructure,
26
27
  metadataFields,
28
+ fieldDefinitions,
27
29
  });
28
30
  }, this.protectedRouteMetadataMapper());
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"envController.js","sourceRoot":"","sources":["../../src/env/envController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAA8B,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAKrE,OAAO,mBAAmB,CAAA;AAI1B,MAAM,OAAO,aAAc,SAAQ,kBAA8C;IACxE,MAAM,CAAC,SAAS,GAAG;QACxB,MAAM,EAAE,cAAc;KACd,CAAA;IAEO,QAAQ,CAAyB;IACjC,4BAA4B,CAAqC;IAElF,YAAY,YAAwC;QAClD,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;QACrC,IAAI,CAAC,4BAA4B,GAAG,YAAY,CAAC,mCAAmC,CAAA;IACtF,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,0BAA0B,CAC/B,cAAc,EACd,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAC/E,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CACpD,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,KAAK,CAAC,aAAa,CACxB,CAAA;YAED,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,qBAAqB,CACvE,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,CACf,CAAA;YAED,MAAM,cAAc,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;YAE7E,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,GAAG,UAAU;gBACb,kBAAkB;gBAClB,cAAc;aACf,CAAC,CAAA;QACJ,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;SACiC,CAAA;IACxD,CAAC"}
1
+ {"version":3,"file":"envController.js","sourceRoot":"","sources":["../../src/env/envController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAA8B,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAKrE,OAAO,mBAAmB,CAAA;AAI1B,MAAM,OAAO,aAAc,SAAQ,kBAA8C;IACxE,MAAM,CAAC,SAAS,GAAG;QACxB,MAAM,EAAE,cAAc;KACd,CAAA;IAEO,QAAQ,CAAyB;IACjC,4BAA4B,CAAqC;IAElF,YAAY,YAAwC;QAClD,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;QACrC,IAAI,CAAC,4BAA4B,GAAG,YAAY,CAAC,mCAAmC,CAAA;IACtF,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,0BAA0B,CAC/B,cAAc,EACd,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAC/E,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CACpD,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,KAAK,CAAC,aAAa,CACxB,CAAA;YAED,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,qBAAqB,CACvE,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,CACf,CAAA;YAED,MAAM,cAAc,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;YAE7E,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;YAEjF,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,GAAG,UAAU;gBACb,kBAAkB;gBAClB,cAAc;gBACd,gBAAgB;aACjB,CAAC,CAAA;QACJ,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;SACiC,CAAA;IACxD,CAAC"}
@@ -10,8 +10,25 @@ export declare class PublishController extends AbstractController<PublishControl
10
10
  groupId: import("zod").ZodString;
11
11
  metadata: import("zod").ZodRecord<import("zod").ZodAny, import("zod").ZodAny>;
12
12
  translations: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
13
+ translatedSource: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
14
+ type: import("zod").ZodLiteral<"inline">;
15
+ value: import("zod").ZodString;
16
+ storageId: import("zod").ZodOptional<import("zod").ZodNever>;
17
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
18
+ type: import("zod").ZodLiteral<"remote">;
19
+ storageId: import("zod").ZodString;
20
+ contentSize: import("zod").ZodOptional<import("zod").ZodString>;
21
+ filePath: import("zod").ZodOptional<import("zod").ZodString>;
22
+ value: import("zod").ZodOptional<import("zod").ZodNever>;
23
+ }, import("zod/v4/core").$strip>]>>;
13
24
  }, import("zod/v4/core").$strip>>;
14
25
  defaultLocale: import("zod").ZodString;
26
+ exportOptions: import("zod").ZodOptional<import("zod").ZodObject<{
27
+ languageFolders: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
28
+ id: import("zod").ZodString;
29
+ slug: import("zod").ZodString;
30
+ }, import("zod/v4/core").$strip>>>;
31
+ }, import("zod/v4/core").$strip>>;
15
32
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
16
33
  statusCode: import("zod").ZodNumber;
17
34
  message: import("zod").ZodOptional<import("zod").ZodString>;
@@ -18,7 +18,7 @@ export class PublishController extends AbstractController {
18
18
  get postPublishContent() {
19
19
  return buildFastifyPayloadRoute(postPublishContract, async (req, reply) => {
20
20
  const adapter = resolveAdapter(this.adapters, req.headers[CONNECTOR_ID_HEADER]);
21
- const publishResult = await adapter.publishService.publishContent(req.integrationConfig, req.authConfig, req.body.items, req.body.defaultLocale, req.reqContext);
21
+ const publishResult = await adapter.publishService.publishContent(req.integrationConfig, req.authConfig, req.body.items, req.body.defaultLocale, req.reqContext, req.body.exportOptions ?? {});
22
22
  if (publishResult.error) {
23
23
  throw new PublicNonRecoverableError({
24
24
  message: 'Could not publish content',
@@ -1 +1 @@
1
- {"version":3,"file":"publishController.js","sourceRoot":"","sources":["../../src/publish/publishController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAA8B,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAKrE,OAAO,mBAAmB,CAAA;AAI1B,MAAM,OAAO,iBAAkB,SAAQ,kBAAkD;IAChF,MAAM,CAAC,SAAS,GAAG;QACxB,WAAW,EAAE,mBAAmB;KACxB,CAAA;IACO,QAAQ,CAAyB;IACjC,4BAA4B,CAAqC;IAElF,YAAY,YAAwC;QAClD,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;QACrC,IAAI,CAAC,4BAA4B,GAAG,YAAY,CAAC,mCAAmC,CAAA;IACtF,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,wBAAwB,CAC7B,mBAAmB,EACnB,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAC/E,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,cAAc,CAC/D,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,CAAC,KAAK,EACd,GAAG,CAAC,IAAI,CAAC,aAAa,EACtB,GAAG,CAAC,UAAU,CACf,CAAA;YAED,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,yBAAyB,CAAC;oBAClC,OAAO,EAAE,2BAA2B;oBACpC,cAAc,EAAE,GAAG;oBACnB,SAAS,EAAE,kBAAkB;oBAC7B,OAAO,EAAE;wBACP,sBAAsB,EAAE,aAAa,CAAC,KAAK;qBAC5C;iBACF,CAAC,CAAA;YACJ,CAAC;YAED,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CACzB;gBACE,aAAa,EAAE,qBAAqB,CAAC,aAAa,CAAC;aACpD,EACD,yBAAyB,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAC9D,CAAA;YAED,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,8BAA8B;aACxC,CAAC,CAAA;QACJ,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,kBAAkB;SACrC,CAAA;IACH,CAAC"}
1
+ {"version":3,"file":"publishController.js","sourceRoot":"","sources":["../../src/publish/publishController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAA8B,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAKrE,OAAO,mBAAmB,CAAA;AAI1B,MAAM,OAAO,iBAAkB,SAAQ,kBAAkD;IAChF,MAAM,CAAC,SAAS,GAAG;QACxB,WAAW,EAAE,mBAAmB;KACxB,CAAA;IACO,QAAQ,CAAyB;IACjC,4BAA4B,CAAqC;IAElF,YAAY,YAAwC;QAClD,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;QACrC,IAAI,CAAC,4BAA4B,GAAG,YAAY,CAAC,mCAAmC,CAAA;IACtF,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,wBAAwB,CAC7B,mBAAmB,EACnB,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAC/E,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,cAAc,CAC/D,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,CAAC,KAAK,EACd,GAAG,CAAC,IAAI,CAAC,aAAa,EACtB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAC7B,CAAA;YAED,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,yBAAyB,CAAC;oBAClC,OAAO,EAAE,2BAA2B;oBACpC,cAAc,EAAE,GAAG;oBACnB,SAAS,EAAE,kBAAkB;oBAC7B,OAAO,EAAE;wBACP,sBAAsB,EAAE,aAAa,CAAC,KAAK;qBAC5C;iBACF,CAAC,CAAA;YACJ,CAAC;YAED,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CACzB;gBACE,aAAa,EAAE,qBAAqB,CAAC,aAAa,CAAC;aACpD,EACD,yBAAyB,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAC9D,CAAA;YAED,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,8BAA8B;aACxC,CAAC,CAAA;QACJ,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,kBAAkB;SACrC,CAAA;IACH,CAAC"}
@@ -21,12 +21,24 @@ export declare class TranslateController extends AbstractController<TranslateCon
21
21
  groupId: import("zod").ZodString;
22
22
  metadata: import("zod").ZodRecord<import("zod").ZodAny, import("zod").ZodAny>;
23
23
  translations: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
24
+ translatedSource: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
25
+ type: import("zod").ZodLiteral<"inline">;
26
+ value: import("zod").ZodString;
27
+ storageId: import("zod").ZodOptional<import("zod").ZodNever>;
28
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
29
+ type: import("zod").ZodLiteral<"remote">;
30
+ storageId: import("zod").ZodString;
31
+ contentSize: import("zod").ZodOptional<import("zod").ZodString>;
32
+ filePath: import("zod").ZodOptional<import("zod").ZodString>;
33
+ value: import("zod").ZodOptional<import("zod").ZodNever>;
34
+ }, import("zod/v4/core").$strip>]>>;
24
35
  itemGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
25
36
  id: import("zod").ZodString;
26
37
  name: import("zod").ZodString;
27
38
  parentItemGroupId: import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodString>>;
28
39
  details: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodAny>;
29
40
  }, import("zod/v4/core").$strip>>>;
41
+ tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
30
42
  }, import("zod/v4/core").$strip>>;
31
43
  payload: import("zod").ZodOptional<import("zod").ZodObject<{
32
44
  message: import("zod").ZodString;
@@ -50,12 +62,24 @@ export declare class TranslateController extends AbstractController<TranslateCon
50
62
  groupId: import("zod").ZodString;
51
63
  metadata: import("zod").ZodRecord<import("zod").ZodAny, import("zod").ZodAny>;
52
64
  translations: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
65
+ translatedSource: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
66
+ type: import("zod").ZodLiteral<"inline">;
67
+ value: import("zod").ZodString;
68
+ storageId: import("zod").ZodOptional<import("zod").ZodNever>;
69
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
70
+ type: import("zod").ZodLiteral<"remote">;
71
+ storageId: import("zod").ZodString;
72
+ contentSize: import("zod").ZodOptional<import("zod").ZodString>;
73
+ filePath: import("zod").ZodOptional<import("zod").ZodString>;
74
+ value: import("zod").ZodOptional<import("zod").ZodNever>;
75
+ }, import("zod/v4/core").$strip>]>>;
53
76
  itemGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
54
77
  id: import("zod").ZodString;
55
78
  name: import("zod").ZodString;
56
79
  parentItemGroupId: import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodString>>;
57
80
  details: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodAny>;
58
81
  }, import("zod/v4/core").$strip>>>;
82
+ tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
59
83
  }, import("zod/v4/core").$strip>>;
60
84
  payload: import("zod").ZodOptional<import("zod").ZodObject<{
61
85
  message: import("zod").ZodString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/connector-shell",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -35,6 +35,10 @@
35
35
  "content-engine"
36
36
  ],
37
37
  "author": "Lokalise",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/lokalise/composed-connector.git"
41
+ },
38
42
  "dependencies": {
39
43
  "@lokalise/connector-adapter-common": "*",
40
44
  "@lokalise/fastify-api-contracts": "^5.3.0",
@@ -44,15 +48,15 @@
44
48
  "opinionated-machine": "^5.2.0"
45
49
  },
46
50
  "peerDependencies": {
47
- "@lokalise/connector-api-contracts": "^1.33.0",
51
+ "@lokalise/connector-api-contracts": "^1.44.0",
48
52
  "zod": "^4.1.12",
49
53
  "fastify": "^5.6.2"
50
54
  },
51
55
  "devDependencies": {
52
- "@biomejs/biome": "^2.3.8",
56
+ "@biomejs/biome": "^2.4.6",
53
57
  "@lokalise/biome-config": "^3.1.1",
54
58
  "@lokalise/tsconfig": "^3.1.0",
55
- "@types/node": "^25.3.3",
59
+ "@types/node": "^25.4.0",
56
60
  "@vitest/coverage-v8": "^3.2.4",
57
61
  "typescript": "^5.9.3",
58
62
  "vitest": "^3.2.4"