@lokalise/connector-api-contracts 1.17.1 → 1.24.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.
@@ -46,7 +46,7 @@ export const postAuthRefreshContract = buildPayloadRoute({
46
46
  method: 'post',
47
47
  requestBodySchema: z.null().optional(),
48
48
  pathResolver: () => `/auth/refresh`,
49
- description: 'Refresh auth integration configuration (applicable only for "apiToken" type)',
49
+ description: 'Refresh integration auth configuration (applicable only for "OAuth" type)',
50
50
  successResponseBodySchema: postAuthResponseBody,
51
51
  responseSchemasByStatusCode: {
52
52
  200: postAuthResponseBody,
@@ -1 +1 @@
1
- {"version":3,"file":"authContracts.js","sourceRoot":"","sources":["../../src/contracts/authContracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authContracts.js","sourceRoot":"","sources":["../../src/contracts/authContracts.ts"],"names":[],"mappings":"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"}
@@ -63,7 +63,7 @@ import { z } from 'zod/v4';
63
63
  export declare const itemGroupListRequestQueryString: z.ZodObject<{
64
64
  limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
65
65
  cursor: z.ZodOptional<z.ZodString>;
66
- parentItemGroupId: z.ZodOptional<z.ZodString>;
66
+ $filter: z.ZodOptional<z.ZodString>;
67
67
  }, z.core.$strip>;
68
68
  export type ItemGroupListRequestQueryString = z.infer<typeof itemGroupListRequestQueryString>;
69
69
  /**
@@ -133,7 +133,7 @@ export declare const getItemGroupListContract: import("@lokalise/api-contracts")
133
133
  }, z.core.$strip>, undefined, z.ZodObject<{
134
134
  limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
135
135
  cursor: z.ZodOptional<z.ZodString>;
136
- parentItemGroupId: z.ZodOptional<z.ZodString>;
136
+ $filter: z.ZodOptional<z.ZodString>;
137
137
  }, z.core.$strip>, z.ZodObject<{
138
138
  'ce-config': z.ZodString;
139
139
  'ce-auth': z.ZodString;
@@ -74,9 +74,43 @@ export const itemGroupListRequestQueryString = z.object({
74
74
  */
75
75
  cursor: z.string().optional(),
76
76
  /**
77
- * Parent item group ID for hierarchical navigation
77
+ * OData $filter expression for filtering item groups.
78
+ * Parsed and validated by the connector adapter.
79
+ *
80
+ * ## Supported Operators
81
+ * - Comparison: eq, ne
82
+ * - Logical: and, or
83
+ * - Collection: in
84
+ *
85
+ * ## Examples
86
+ *
87
+ * Get children of a specific folder (replaces parentItemGroupId):
88
+ * ```
89
+ * $filter=parentItemGroupId eq 'folder-123'
90
+ * ```
91
+ *
92
+ * Get root-level groups only:
93
+ * ```
94
+ * $filter=parentItemGroupId eq null
95
+ * ```
96
+ *
97
+ * Filter by group type:
98
+ * ```
99
+ * $filter=type eq 'folder'
100
+ * ```
101
+ *
102
+ * Combined filters:
103
+ * ```
104
+ * $filter=parentItemGroupId eq 'folder-123' and type eq 'folder'
105
+ * ```
106
+ *
107
+ * ## Adapter Responsibilities
108
+ * - Parse the OData expression using a library like @balena/odata-parser
109
+ * - Validate supported fields and operators for the specific connector
110
+ * - Map to native API query syntax
111
+ * - Return appropriate errors for unsupported expressions
78
112
  */
79
- parentItemGroupId: z.string().optional(),
113
+ $filter: z.string().optional(),
80
114
  });
81
115
  /**
82
116
  * Represents a single item group entry (space, folder, category, etc.)
@@ -1 +1 @@
1
- {"version":3,"file":"itemGroupContracts.js","sourceRoot":"","sources":["../../src/contracts/itemGroupContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAA;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;;OAEG;IACH,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAA;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1E,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;CACvC,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;CAC/B,CAAC;KACD,MAAM,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAA;AAIpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAAC;IACpD,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB;IACrC,WAAW,EAAE,kEAAkE;IAC/E,kBAAkB,EAAE,+BAA+B;IACnD,yBAAyB,EAAE,yBAAyB;IACpD,2BAA2B,EAAE;QAC3B,GAAG,EAAE,yBAAyB;QAC9B,GAAG,EAAE,4BAA4B;KAClC;IACD,mBAAmB,EAAE,gCAAgC;CACtD,CAAC,CAAA"}
1
+ {"version":3,"file":"itemGroupContracts.js","sourceRoot":"","sources":["../../src/contracts/itemGroupContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAA;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAA;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1E,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;CACvC,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;CAC/B,CAAC;KACD,MAAM,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAA;AAIpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAAC;IACpD,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB;IACrC,WAAW,EAAE,kEAAkE;IAC/E,kBAAkB,EAAE,+BAA+B;IACnD,yBAAyB,EAAE,yBAAyB;IACpD,2BAA2B,EAAE;QAC3B,GAAG,EAAE,yBAAyB;QAC9B,GAAG,EAAE,4BAA4B;KAClC;IACD,mBAAmB,EAAE,gCAAgC;CACtD,CAAC,CAAA"}
@@ -2,9 +2,7 @@ import { z } from 'zod/v4';
2
2
  export declare const itemListRequestQueryString: z.ZodObject<{
3
3
  limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
4
4
  cursor: z.ZodOptional<z.ZodString>;
5
- contentTypes: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodArray<z.ZodString>>>;
6
- filterByGroups: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodArray<z.ZodString>>>;
7
- filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
5
+ $filter: z.ZodOptional<z.ZodString>;
8
6
  }, z.core.$strip>;
9
7
  export type ItemListRequestQueryString = z.infer<typeof itemListRequestQueryString>;
10
8
  export declare const itemListEntry: z.ZodObject<{
@@ -48,9 +46,7 @@ export declare const getItemListContract: import("@lokalise/api-contracts").GetR
48
46
  }, z.core.$strip>, undefined, z.ZodObject<{
49
47
  limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
50
48
  cursor: z.ZodOptional<z.ZodString>;
51
- contentTypes: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodArray<z.ZodString>>>;
52
- filterByGroups: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodArray<z.ZodString>>>;
53
- filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
49
+ $filter: z.ZodOptional<z.ZodString>;
54
50
  }, z.core.$strip>, z.ZodObject<{
55
51
  'ce-config': z.ZodString;
56
52
  'ce-auth': z.ZodString;
@@ -1,6 +1,5 @@
1
1
  import { paginatedResponseSchema } from '@lokalise/api-common';
2
2
  import { buildGetRoute } from '@lokalise/api-contracts';
3
- import { toArrayPreprocessor } from '@lokalise/zod-extras';
4
3
  import { z } from 'zod/v4';
5
4
  import { MAX_TITLE_LENGTH } from "./cacheContracts.js";
6
5
  import { COMMON_ERROR_RESPONSE_SCHEMA, CONNECTOR_REQUEST_HEADERS_SCHEMA, ITEM_IDENTIFIER_SCHEMA, RATE_LIMIT_RESPONSE_HEADERS_SCHEMA, } from "./commonSchemas.js";
@@ -19,48 +18,58 @@ export const itemListRequestQueryString = z.object({
19
18
  */
20
19
  cursor: z.string().optional(),
21
20
  /**
22
- * Domain content type to filter by, e. g. "newsletters", "campaigns", "emails". In case more than one value is provided, cursor is expected to keep track of what content type it is fetching now. If not set, all supported content types will iterated through.
23
- */
24
- contentTypes: z.preprocess(toArrayPreprocessor, z.array(z.string())).optional(),
25
- /**
26
- * Filter items by item group IDs (folders, spaces, categories, etc.)
27
- * IDs should match those returned by `/v1/item-groups` endpoint.
28
- * Adapters map these to their native scoping mechanism.
21
+ * OData $filter expression for filtering items.
22
+ * Parsed and validated by the connector adapter.
29
23
  *
30
- * Example workflow:
31
- * 1. UI calls GET /v1/item-groups to fetch available groups (e.g., folders)
32
- * 2. User selects groups in the UI
33
- * 3. UI passes selected group IDs here to scope the item list
24
+ * ## Supported Operators
25
+ * - Comparison: eq, ne, gt, ge, lt, le
26
+ * - Logical: and, or
27
+ * - Collection: in
34
28
  *
35
- * For Storyblok: folder IDs are mapped to `starts_with` paths internally.
36
- * Other connectors can ignore or map these IDs as needed.
29
+ * ## Supported Functions
30
+ * - contains(field, 'value')
31
+ * - startswith(field, 'value')
32
+ * - endswith(field, 'value')
37
33
  *
38
- * Note: Include filterByGroups in cursor payload to maintain scope across paginated requests.
39
- */
40
- filterByGroups: z.preprocess(toArrayPreprocessor, z.array(z.string())).optional(),
41
- /**
42
- * Connector-specific filter parameters as key-value pairs.
43
- * Parsed and interpreted by each adapter based on their platform's capabilities.
34
+ * ## Examples
35
+ *
36
+ * Filter by owner:
37
+ * ```
38
+ * $filter=ownedBy eq 'me'
39
+ * ```
40
+ *
41
+ * Filter by modified date:
42
+ * ```
43
+ * $filter=modifiedTime gt 2024-11-01
44
+ * ```
45
+ *
46
+ * Filter by multiple folders (replaces filterByGroups):
47
+ * ```
48
+ * $filter=parentGroup in ('folder-a', 'folder-b')
49
+ * ```
50
+ *
51
+ * Filter by content types (replaces contentTypes):
52
+ * ```
53
+ * $filter=contentType in ('article', 'page')
54
+ * ```
44
55
  *
45
- * Common filter keys (connector-dependent):
46
- * - `status`: 'draft' | 'published' | 'all' - filter by item version/status
47
- * - `search`: string - free-text search query
48
- * - `tags`: string[] - filter by tags/labels
49
- * - `snapshotToken`: string - cache version token for pagination stability
56
+ * Complex filter with AND/OR:
57
+ * ```
58
+ * $filter=(ownedBy eq 'me' or sharedWithMe eq true) and modifiedTime gt 2024-11-01
59
+ * ```
50
60
  *
51
- * Example for Storyblok:
52
- * {
53
- * "status": "published",
54
- * "search": "blog post",
55
- * "snapshotToken": "1234567890"
56
- * }
61
+ * Search by name:
62
+ * ```
63
+ * $filter=contains(name, 'report')
64
+ * ```
57
65
  *
58
- * Adapters should:
59
- * - Map known keys to their platform's native filters
60
- * - Ignore unknown keys gracefully
61
- * - Include relevant filter values in cursor for pagination consistency
66
+ * ## Adapter Responsibilities:
67
+ * - Parse the OData expression using a library like @balena/odata-parser
68
+ * - Validate supported fields and operators for the specific connector
69
+ * - Map to native API query syntax
70
+ * - Return appropriate errors for unsupported expressions
62
71
  */
63
- filter: z.record(z.string(), z.any()).optional(),
72
+ $filter: z.string().optional(),
64
73
  });
65
74
  export const itemListEntry = ITEM_IDENTIFIER_SCHEMA.extend({
66
75
  fields: z.looseObject({}),
@@ -1 +1 @@
1
- {"version":3,"file":"itemListContracts.js","sourceRoot":"","sources":["../../src/contracts/itemListContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,oBAAoB,CAAA;AAE3B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD;;;;;OAKG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;;OAEG;IACH,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/E;;;;;;;;;;;;;;OAcG;IACH,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC7C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAA;AAI1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,WAAW,EAAE,6BAA6B;IAC1C,kBAAkB,EAAE,0BAA0B;IAC9C,yBAAyB,EAAE,oBAAoB;IAC/C,2BAA2B,EAAE;QAC3B,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,4BAA4B;KAClC;IACD,mBAAmB,EAAE,gCAAgC;IACrD,oBAAoB,EAAE,kCAAkC;CACzD,CAAC,CAAA"}
1
+ {"version":3,"file":"itemListContracts.js","sourceRoot":"","sources":["../../src/contracts/itemListContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,oBAAoB,CAAA;AAE3B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD;;;;;OAKG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC7C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAA;AAI1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,WAAW,EAAE,6BAA6B;IAC1C,kBAAkB,EAAE,0BAA0B;IAC9C,yBAAyB,EAAE,oBAAoB;IAC/C,2BAA2B,EAAE;QAC3B,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,4BAA4B;KAClC;IACD,mBAAmB,EAAE,gCAAgC;IACrD,oBAAoB,EAAE,kCAAkC;CACzD,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/connector-api-contracts",
3
- "version": "1.17.1",
3
+ "version": "1.24.0",
4
4
  "description": "Lokalise Connector API schemas and contracts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",