@lokalise/connector-shell 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/README.md +140 -0
- package/dist/ConnectorShellModule.d.ts +59 -0
- package/dist/ConnectorShellModule.js +51 -0
- package/dist/ConnectorShellModule.js.map +1 -0
- package/dist/adapterResolver/errors/adapterErrors.d.ts +10 -0
- package/dist/adapterResolver/errors/adapterErrors.js +40 -0
- package/dist/adapterResolver/errors/adapterErrors.js.map +1 -0
- package/dist/adapterResolver/resolveAdapter.d.ts +2 -0
- package/dist/adapterResolver/resolveAdapter.js +16 -0
- package/dist/adapterResolver/resolveAdapter.js.map +1 -0
- package/dist/auth/authController.d.ts +55 -0
- package/dist/auth/authController.js +73 -0
- package/dist/auth/authController.js.map +1 -0
- package/dist/cache/cacheController.d.ts +85 -0
- package/dist/cache/cacheController.js +74 -0
- package/dist/cache/cacheController.js.map +1 -0
- package/dist/commonTypes.d.ts +17 -0
- package/dist/commonTypes.js +2 -0
- package/dist/commonTypes.js.map +1 -0
- package/dist/env/envController.d.ts +49 -0
- package/dist/env/envController.js +34 -0
- package/dist/env/envController.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/itemGroup/ItemGroupController.d.ts +55 -0
- package/dist/itemGroup/ItemGroupController.js +38 -0
- package/dist/itemGroup/ItemGroupController.js.map +1 -0
- package/dist/itemList/ItemListController.d.ts +68 -0
- package/dist/itemList/ItemListController.js +35 -0
- package/dist/itemList/ItemListController.js.map +1 -0
- package/dist/publish/publishController.d.ts +51 -0
- package/dist/publish/publishController.js +44 -0
- package/dist/publish/publishController.js.map +1 -0
- package/dist/translate/translateController.d.ts +77 -0
- package/dist/translate/translateController.js +30 -0
- package/dist/translate/translateController.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type http from 'node:http';
|
|
2
|
+
import type { apiError } from '@lokalise/connector-api-contracts';
|
|
3
|
+
import type { FastifyReply, RouteOptions } from 'fastify';
|
|
4
|
+
import type { ZodTypeProvider } from 'fastify-type-provider-zod';
|
|
5
|
+
import type z from 'zod/v4';
|
|
6
|
+
declare module 'fastify' {
|
|
7
|
+
interface FastifyRequest {
|
|
8
|
+
integrationConfig?: unknown;
|
|
9
|
+
authConfig?: unknown;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export type ApiError = z.infer<typeof apiError>;
|
|
13
|
+
export interface ApiReply<P extends Record<string, unknown>> extends FastifyReply {
|
|
14
|
+
send(payload: P | ApiError): FastifyReply;
|
|
15
|
+
status(statusCode: ApiError['statusCode']): FastifyReply;
|
|
16
|
+
}
|
|
17
|
+
export type Routes = Array<RouteOptions<http.Server, http.IncomingMessage, http.ServerResponse, any, any, any, ZodTypeProvider>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonTypes.js","sourceRoot":"","sources":["../src/commonTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AbstractController, type BuildRoutesReturnType } from 'opinionated-machine';
|
|
2
|
+
import type { ConnectorShellDependencies } from '../ConnectorShellModule.ts';
|
|
3
|
+
import '../commonTypes.ts';
|
|
4
|
+
type EnvControllerContractsType = typeof EnvController.contracts;
|
|
5
|
+
export declare class EnvController extends AbstractController<EnvControllerContractsType> {
|
|
6
|
+
static contracts: {
|
|
7
|
+
readonly getEnv: import("@lokalise/api-contracts").GetRouteDefinition<import("zod/v4").ZodObject<{
|
|
8
|
+
defaultLocale: import("zod/v4").ZodString;
|
|
9
|
+
locales: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
10
|
+
name: import("zod/v4").ZodString;
|
|
11
|
+
code: import("zod/v4").ZodString;
|
|
12
|
+
}, import("zod/v4/core").$strip>>;
|
|
13
|
+
supportedContentTypes: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
|
|
14
|
+
cacheItemStructure: import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodString>;
|
|
15
|
+
}, import("zod/v4/core").$strip>, undefined, undefined, import("zod/v4").ZodObject<{
|
|
16
|
+
'ce-config': import("zod/v4").ZodString;
|
|
17
|
+
'ce-auth': import("zod/v4").ZodString;
|
|
18
|
+
"x-connector-id": import("zod/v4").ZodString;
|
|
19
|
+
}, import("zod/v4/core").$strip>, undefined, false, false, {
|
|
20
|
+
200: import("zod/v4").ZodObject<{
|
|
21
|
+
defaultLocale: import("zod/v4").ZodString;
|
|
22
|
+
locales: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
23
|
+
name: import("zod/v4").ZodString;
|
|
24
|
+
code: import("zod/v4").ZodString;
|
|
25
|
+
}, import("zod/v4/core").$strip>>;
|
|
26
|
+
supportedContentTypes: import("zod/v4").ZodOptional<import("zod/v4").ZodArray<import("zod/v4").ZodString>>;
|
|
27
|
+
cacheItemStructure: import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodString>;
|
|
28
|
+
}, import("zod/v4/core").$strip>;
|
|
29
|
+
403: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodObject<{
|
|
30
|
+
statusCode: import("zod/v4").ZodNumber;
|
|
31
|
+
payload: import("zod/v4").ZodObject<{
|
|
32
|
+
message: import("zod/v4").ZodString;
|
|
33
|
+
errorCode: import("zod/v4").ZodString;
|
|
34
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
35
|
+
}, import("zod/v4/core").$strip>;
|
|
36
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
37
|
+
message: import("zod/v4").ZodString;
|
|
38
|
+
errorCode: import("zod/v4").ZodString;
|
|
39
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
40
|
+
}, import("zod/v4/core").$strip>]>;
|
|
41
|
+
}>;
|
|
42
|
+
};
|
|
43
|
+
private readonly adapters;
|
|
44
|
+
private readonly protectedRouteMetadataMapper;
|
|
45
|
+
constructor(dependencies: ConnectorShellDependencies);
|
|
46
|
+
private get getEnv();
|
|
47
|
+
buildRoutes(): BuildRoutesReturnType<EnvControllerContractsType>;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CONNECTOR_ID_HEADER, getEnvContract } from '@lokalise/connector-api-contracts';
|
|
2
|
+
import { buildFastifyNoPayloadRoute } from '@lokalise/fastify-api-contracts';
|
|
3
|
+
import { AbstractController } from 'opinionated-machine';
|
|
4
|
+
import { resolveAdapter } from "../adapterResolver/resolveAdapter.js";
|
|
5
|
+
import "../commonTypes.js";
|
|
6
|
+
export class EnvController extends AbstractController {
|
|
7
|
+
static contracts = {
|
|
8
|
+
getEnv: getEnvContract,
|
|
9
|
+
};
|
|
10
|
+
adapters;
|
|
11
|
+
protectedRouteMetadataMapper;
|
|
12
|
+
constructor(dependencies) {
|
|
13
|
+
super();
|
|
14
|
+
this.adapters = dependencies.adapters;
|
|
15
|
+
this.protectedRouteMetadataMapper = dependencies.protectedRouteMetadataMapperFactory;
|
|
16
|
+
}
|
|
17
|
+
get getEnv() {
|
|
18
|
+
return buildFastifyNoPayloadRoute(getEnvContract, async (req, reply) => {
|
|
19
|
+
const adapter = resolveAdapter(this.adapters, req.headers[CONNECTOR_ID_HEADER]);
|
|
20
|
+
const localeData = await adapter.envService.getLocales(req.integrationConfig, req.authConfig, req.reqContext);
|
|
21
|
+
const cacheItemStructure = await adapter.envService.getCacheItemStructure(req.integrationConfig, req.authConfig, req.reqContext);
|
|
22
|
+
await reply.send({
|
|
23
|
+
...localeData,
|
|
24
|
+
cacheItemStructure,
|
|
25
|
+
});
|
|
26
|
+
}, this.protectedRouteMetadataMapper());
|
|
27
|
+
}
|
|
28
|
+
buildRoutes() {
|
|
29
|
+
return {
|
|
30
|
+
getEnv: this.getEnv,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=envController.js.map
|
|
@@ -0,0 +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,CACf,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,KAAK,CAAC,IAAI,CAAC;gBACf,GAAG,UAAU;gBACb,kBAAkB;aACnB,CAAC,CAAA;QACJ,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAA;IACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './commonTypes.ts';
|
|
2
|
+
export { type ConnectorShellBaseDependencies, type ConnectorShellDependencies, ConnectorShellModule, type ProtectedRouteMetadataMapperFactory, } from './ConnectorShellModule.ts';
|
|
3
|
+
export { AuthController } from './auth/authController.ts';
|
|
4
|
+
export { CacheController } from './cache/cacheController.ts';
|
|
5
|
+
export { EnvController } from './env/envController.ts';
|
|
6
|
+
export { ItemGroupController } from './itemGroup/ItemGroupController.ts';
|
|
7
|
+
export { ItemListController } from './itemList/ItemListController.ts';
|
|
8
|
+
export { PublishController } from './publish/publishController.ts';
|
|
9
|
+
export { TranslateController } from './translate/translateController.ts';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// biome-ignore-all lint: This is a library package's public API barrel file
|
|
2
|
+
// biome-ignore-all format: This is a library package's public API barrel file
|
|
3
|
+
// biome-ignore-all assist/source/organizeImports: This is a library package's public API barrel file
|
|
4
|
+
// Import commonTypes for FastifyRequest type augmentation side effect
|
|
5
|
+
import "./commonTypes.js";
|
|
6
|
+
// Main module and types
|
|
7
|
+
export { ConnectorShellModule, } from "./ConnectorShellModule.js";
|
|
8
|
+
// Controllers (exported for testing purposes)
|
|
9
|
+
export { AuthController } from "./auth/authController.js";
|
|
10
|
+
export { CacheController } from "./cache/cacheController.js";
|
|
11
|
+
export { EnvController } from "./env/envController.js";
|
|
12
|
+
export { ItemGroupController } from "./itemGroup/ItemGroupController.js";
|
|
13
|
+
export { ItemListController } from "./itemList/ItemListController.js";
|
|
14
|
+
export { PublishController } from "./publish/publishController.js";
|
|
15
|
+
export { TranslateController } from "./translate/translateController.js";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,8EAA8E;AAC9E,qGAAqG;AAErG,sEAAsE;AACtE,OAAO,kBAAkB,CAAA;AAEzB,wBAAwB;AACxB,OAAO,EAGL,oBAAoB,GAErB,MAAM,2BAA2B,CAAA;AAElC,8CAA8C;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { AbstractController, type BuildRoutesReturnType } from 'opinionated-machine';
|
|
2
|
+
import type { ConnectorShellDependencies } from '../ConnectorShellModule.ts';
|
|
3
|
+
import '../commonTypes.ts';
|
|
4
|
+
type ItemGroupControllerContractsType = typeof ItemGroupController.contracts;
|
|
5
|
+
export declare class ItemGroupController extends AbstractController<ItemGroupControllerContractsType> {
|
|
6
|
+
static contracts: {
|
|
7
|
+
readonly getItemGroupList: import("@lokalise/api-contracts").GetRouteDefinition<import("zod/v4").ZodObject<{
|
|
8
|
+
items: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
9
|
+
id: import("zod/v4").ZodString;
|
|
10
|
+
name: import("zod/v4").ZodString;
|
|
11
|
+
parentItemGroupId: import("zod/v4").ZodNullable<import("zod/v4").ZodOptional<import("zod/v4").ZodString>>;
|
|
12
|
+
details: import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>;
|
|
13
|
+
}, import("zod/v4/core").$strip>>;
|
|
14
|
+
hasMore: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
15
|
+
nextCursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
16
|
+
}, import("zod/v4/core").$strip>, undefined, import("zod/v4").ZodObject<{
|
|
17
|
+
limit: import("zod/v4").ZodOptional<import("zod/v4").ZodCoercedNumber<unknown>>;
|
|
18
|
+
cursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
19
|
+
$filter: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
20
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
21
|
+
'ce-config': import("zod/v4").ZodString;
|
|
22
|
+
'ce-auth': import("zod/v4").ZodString;
|
|
23
|
+
"x-connector-id": import("zod/v4").ZodString;
|
|
24
|
+
}, import("zod/v4/core").$strip>, undefined, false, false, {
|
|
25
|
+
200: import("zod/v4").ZodObject<{
|
|
26
|
+
items: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
27
|
+
id: import("zod/v4").ZodString;
|
|
28
|
+
name: import("zod/v4").ZodString;
|
|
29
|
+
parentItemGroupId: import("zod/v4").ZodNullable<import("zod/v4").ZodOptional<import("zod/v4").ZodString>>;
|
|
30
|
+
details: import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>;
|
|
31
|
+
}, import("zod/v4/core").$strip>>;
|
|
32
|
+
hasMore: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
33
|
+
nextCursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
34
|
+
}, import("zod/v4/core").$strip>;
|
|
35
|
+
401: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodObject<{
|
|
36
|
+
statusCode: import("zod/v4").ZodNumber;
|
|
37
|
+
payload: import("zod/v4").ZodObject<{
|
|
38
|
+
message: import("zod/v4").ZodString;
|
|
39
|
+
errorCode: import("zod/v4").ZodString;
|
|
40
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
41
|
+
}, import("zod/v4/core").$strip>;
|
|
42
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
43
|
+
message: import("zod/v4").ZodString;
|
|
44
|
+
errorCode: import("zod/v4").ZodString;
|
|
45
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
46
|
+
}, import("zod/v4/core").$strip>]>;
|
|
47
|
+
}>;
|
|
48
|
+
};
|
|
49
|
+
private readonly adapters;
|
|
50
|
+
private readonly protectedRouteMetadataMapper;
|
|
51
|
+
constructor(dependencies: ConnectorShellDependencies);
|
|
52
|
+
private get getItemGroupList();
|
|
53
|
+
buildRoutes(): BuildRoutesReturnType<ItemGroupControllerContractsType>;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ItemGroupNotSupportedError } from '@lokalise/connector-adapter-common';
|
|
2
|
+
import { CONNECTOR_ID_HEADER, getItemGroupListContract } from '@lokalise/connector-api-contracts';
|
|
3
|
+
import { buildFastifyNoPayloadRoute } from '@lokalise/fastify-api-contracts';
|
|
4
|
+
import { AbstractController } from 'opinionated-machine';
|
|
5
|
+
import { resolveAdapter } from "../adapterResolver/resolveAdapter.js";
|
|
6
|
+
import "../commonTypes.js";
|
|
7
|
+
export class ItemGroupController extends AbstractController {
|
|
8
|
+
static contracts = {
|
|
9
|
+
getItemGroupList: getItemGroupListContract,
|
|
10
|
+
};
|
|
11
|
+
adapters;
|
|
12
|
+
protectedRouteMetadataMapper;
|
|
13
|
+
constructor(dependencies) {
|
|
14
|
+
super();
|
|
15
|
+
this.adapters = dependencies.adapters;
|
|
16
|
+
this.protectedRouteMetadataMapper = dependencies.protectedRouteMetadataMapperFactory;
|
|
17
|
+
}
|
|
18
|
+
get getItemGroupList() {
|
|
19
|
+
return buildFastifyNoPayloadRoute(getItemGroupListContract, async (req, reply) => {
|
|
20
|
+
const adapter = resolveAdapter(this.adapters, req.headers[CONNECTOR_ID_HEADER]);
|
|
21
|
+
if (!adapter.itemGroupService) {
|
|
22
|
+
throw new ItemGroupNotSupportedError(adapter.getConnectorName());
|
|
23
|
+
}
|
|
24
|
+
const result = await adapter.itemGroupService.getItemGroups(req.integrationConfig, req.authConfig, {
|
|
25
|
+
limit: req.query.limit,
|
|
26
|
+
cursor: req.query.cursor,
|
|
27
|
+
$filter: req.query.$filter,
|
|
28
|
+
}, req.reqContext);
|
|
29
|
+
await reply.send(result);
|
|
30
|
+
}, this.protectedRouteMetadataMapper());
|
|
31
|
+
}
|
|
32
|
+
buildRoutes() {
|
|
33
|
+
return {
|
|
34
|
+
getItemGroupList: this.getItemGroupList,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ItemGroupController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemGroupController.js","sourceRoot":"","sources":["../../src/itemGroup/ItemGroupController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC7F,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AACjG,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,mBAAoB,SAAQ,kBAAoD;IACpF,MAAM,CAAC,SAAS,GAAG;QACxB,gBAAgB,EAAE,wBAAwB;KAClC,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,gBAAgB;QAC1B,OAAO,0BAA0B,CAC/B,wBAAwB,EACxB,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;YAE/E,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,MAAM,IAAI,0BAA0B,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;YAClE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,aAAa,CACzD,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd;gBACE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;gBACtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;gBACxB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;aAC3B,EACD,GAAG,CAAC,UAAU,CACf,CAAA;YAED,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1B,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAA;IACH,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { AbstractController, type BuildRoutesReturnType } from 'opinionated-machine';
|
|
2
|
+
import type { ConnectorShellDependencies } from '../ConnectorShellModule.ts';
|
|
3
|
+
import '../commonTypes.ts';
|
|
4
|
+
type ItemListControllerContractsType = typeof ItemListController.contracts;
|
|
5
|
+
export declare class ItemListController extends AbstractController<ItemListControllerContractsType> {
|
|
6
|
+
static contracts: {
|
|
7
|
+
readonly getItemList: import("@lokalise/api-contracts").GetRouteDefinition<import("zod/v4").ZodObject<{
|
|
8
|
+
data: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
9
|
+
uniqueId: import("zod/v4").ZodString;
|
|
10
|
+
groupId: import("zod/v4").ZodString;
|
|
11
|
+
metadata: import("zod/v4").ZodRecord<import("zod/v4").ZodAny, import("zod/v4").ZodAny>;
|
|
12
|
+
fields: import("zod/v4").ZodObject<{}, import("zod/v4/core").$loose>;
|
|
13
|
+
title: import("zod/v4").ZodString;
|
|
14
|
+
groupTitle: import("zod/v4").ZodString;
|
|
15
|
+
}, import("zod/v4/core").$strip>>;
|
|
16
|
+
meta: import("zod/v4").ZodObject<{
|
|
17
|
+
count: import("zod/v4").ZodNumber;
|
|
18
|
+
cursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
19
|
+
hasMore: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
20
|
+
}, import("zod/v4/core").$strip>;
|
|
21
|
+
}, import("zod/v4/core").$strip>, undefined, import("zod/v4").ZodObject<{
|
|
22
|
+
limit: import("zod/v4").ZodOptional<import("zod/v4").ZodCoercedNumber<unknown>>;
|
|
23
|
+
cursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
24
|
+
contentTypes: import("zod/v4").ZodOptional<import("zod/v4").ZodPipe<import("zod/v4").ZodTransform<unknown, unknown>, import("zod/v4").ZodArray<import("zod/v4").ZodString>>>;
|
|
25
|
+
$filter: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
26
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
27
|
+
'ce-config': import("zod/v4").ZodString;
|
|
28
|
+
'ce-auth': import("zod/v4").ZodString;
|
|
29
|
+
"x-connector-id": import("zod/v4").ZodString;
|
|
30
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
31
|
+
'x-continue-after': import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
32
|
+
}, import("zod/v4/core").$strip>, false, false, {
|
|
33
|
+
200: import("zod/v4").ZodObject<{
|
|
34
|
+
data: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
35
|
+
uniqueId: import("zod/v4").ZodString;
|
|
36
|
+
groupId: import("zod/v4").ZodString;
|
|
37
|
+
metadata: import("zod/v4").ZodRecord<import("zod/v4").ZodAny, import("zod/v4").ZodAny>;
|
|
38
|
+
fields: import("zod/v4").ZodObject<{}, import("zod/v4/core").$loose>;
|
|
39
|
+
title: import("zod/v4").ZodString;
|
|
40
|
+
groupTitle: import("zod/v4").ZodString;
|
|
41
|
+
}, import("zod/v4/core").$strip>>;
|
|
42
|
+
meta: import("zod/v4").ZodObject<{
|
|
43
|
+
count: import("zod/v4").ZodNumber;
|
|
44
|
+
cursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
45
|
+
hasMore: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
46
|
+
}, import("zod/v4/core").$strip>;
|
|
47
|
+
}, import("zod/v4/core").$strip>;
|
|
48
|
+
401: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodObject<{
|
|
49
|
+
statusCode: import("zod/v4").ZodNumber;
|
|
50
|
+
payload: import("zod/v4").ZodObject<{
|
|
51
|
+
message: import("zod/v4").ZodString;
|
|
52
|
+
errorCode: import("zod/v4").ZodString;
|
|
53
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
54
|
+
}, import("zod/v4/core").$strip>;
|
|
55
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
56
|
+
message: import("zod/v4").ZodString;
|
|
57
|
+
errorCode: import("zod/v4").ZodString;
|
|
58
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
59
|
+
}, import("zod/v4/core").$strip>]>;
|
|
60
|
+
}>;
|
|
61
|
+
};
|
|
62
|
+
private readonly adapters;
|
|
63
|
+
private readonly protectedRouteMetadataMapper;
|
|
64
|
+
constructor(dependencies: ConnectorShellDependencies);
|
|
65
|
+
private get getItemList();
|
|
66
|
+
buildRoutes(): BuildRoutesReturnType<ItemListControllerContractsType>;
|
|
67
|
+
}
|
|
68
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CONNECTOR_ID_HEADER, getItemListContract } from '@lokalise/connector-api-contracts';
|
|
2
|
+
import { buildFastifyNoPayloadRoute } from '@lokalise/fastify-api-contracts';
|
|
3
|
+
import { AbstractController } from 'opinionated-machine';
|
|
4
|
+
import { resolveAdapter } from "../adapterResolver/resolveAdapter.js";
|
|
5
|
+
import "../commonTypes.js";
|
|
6
|
+
export class ItemListController extends AbstractController {
|
|
7
|
+
static contracts = {
|
|
8
|
+
getItemList: getItemListContract,
|
|
9
|
+
};
|
|
10
|
+
adapters;
|
|
11
|
+
protectedRouteMetadataMapper;
|
|
12
|
+
constructor(dependencies) {
|
|
13
|
+
super();
|
|
14
|
+
this.adapters = dependencies.adapters;
|
|
15
|
+
this.protectedRouteMetadataMapper = dependencies.protectedRouteMetadataMapperFactory;
|
|
16
|
+
}
|
|
17
|
+
get getItemList() {
|
|
18
|
+
return buildFastifyNoPayloadRoute(getItemListContract, async (req, reply) => {
|
|
19
|
+
const adapter = resolveAdapter(this.adapters, req.headers[CONNECTOR_ID_HEADER]);
|
|
20
|
+
const itemListResult = await adapter.itemListService.getItemList(req.integrationConfig, req.authConfig, {
|
|
21
|
+
cursor: req.query.cursor,
|
|
22
|
+
limit: req.query.limit,
|
|
23
|
+
contentTypes: req.query.contentTypes,
|
|
24
|
+
$filter: req.query.$filter,
|
|
25
|
+
}, req.reqContext);
|
|
26
|
+
await reply.send(itemListResult);
|
|
27
|
+
}, this.protectedRouteMetadataMapper());
|
|
28
|
+
}
|
|
29
|
+
buildRoutes() {
|
|
30
|
+
return {
|
|
31
|
+
getItemList: this.getItemList,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ItemListController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemListController.js","sourceRoot":"","sources":["../../src/itemList/ItemListController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5F,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,kBAAmB,SAAQ,kBAAmD;IAClF,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,WAAW;QACrB,OAAO,0BAA0B,CAC/B,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,cAAc,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,WAAW,CAC9D,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd;gBACE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;gBACxB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;gBACtB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY;gBACpC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;aAC3B,EACD,GAAG,CAAC,UAAU,CACf,CAAA;YAED,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAClC,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAA;IACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AbstractController, type BuildRoutesReturnType } from 'opinionated-machine';
|
|
2
|
+
import type { ConnectorShellDependencies } from '../ConnectorShellModule.ts';
|
|
3
|
+
import '../commonTypes.ts';
|
|
4
|
+
type PublishControllerContractsType = typeof PublishController.contracts;
|
|
5
|
+
export declare class PublishController extends AbstractController<PublishControllerContractsType> {
|
|
6
|
+
static contracts: {
|
|
7
|
+
readonly postPublish: import("@lokalise/api-contracts").PayloadRouteDefinition<import("zod/v4").ZodObject<{
|
|
8
|
+
items: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
9
|
+
uniqueId: import("zod/v4").ZodString;
|
|
10
|
+
groupId: import("zod/v4").ZodString;
|
|
11
|
+
metadata: import("zod/v4").ZodRecord<import("zod/v4").ZodAny, import("zod/v4").ZodAny>;
|
|
12
|
+
translations: import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodString>;
|
|
13
|
+
}, import("zod/v4/core").$strip>>;
|
|
14
|
+
defaultLocale: import("zod/v4").ZodString;
|
|
15
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
16
|
+
statusCode: import("zod/v4").ZodNumber;
|
|
17
|
+
message: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
18
|
+
payload: import("zod/v4").ZodOptional<import("zod/v4").ZodObject<{
|
|
19
|
+
message: import("zod/v4").ZodString;
|
|
20
|
+
errorCode: import("zod/v4").ZodString;
|
|
21
|
+
details: import("zod/v4").ZodObject<{
|
|
22
|
+
errors: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{}, import("zod/v4/core").$loose>>;
|
|
23
|
+
}, import("zod/v4/core").$strip>;
|
|
24
|
+
}, import("zod/v4/core").$strip>>;
|
|
25
|
+
}, import("zod/v4/core").$strip>, undefined, undefined, import("zod/v4").ZodObject<{
|
|
26
|
+
'ce-config': import("zod/v4").ZodString;
|
|
27
|
+
'ce-auth': import("zod/v4").ZodString;
|
|
28
|
+
"x-connector-id": import("zod/v4").ZodString;
|
|
29
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
30
|
+
'x-continue-after': import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
31
|
+
}, import("zod/v4/core").$strip>, false, false, {
|
|
32
|
+
200: import("zod/v4").ZodObject<{
|
|
33
|
+
statusCode: import("zod/v4").ZodNumber;
|
|
34
|
+
message: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
35
|
+
payload: import("zod/v4").ZodOptional<import("zod/v4").ZodObject<{
|
|
36
|
+
message: import("zod/v4").ZodString;
|
|
37
|
+
errorCode: import("zod/v4").ZodString;
|
|
38
|
+
details: import("zod/v4").ZodObject<{
|
|
39
|
+
errors: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{}, import("zod/v4/core").$loose>>;
|
|
40
|
+
}, import("zod/v4/core").$strip>;
|
|
41
|
+
}, import("zod/v4/core").$strip>>;
|
|
42
|
+
}, import("zod/v4/core").$strip>;
|
|
43
|
+
}>;
|
|
44
|
+
};
|
|
45
|
+
private readonly adapters;
|
|
46
|
+
private readonly protectedRouteMetadataMapper;
|
|
47
|
+
constructor(dependencies: ConnectorShellDependencies);
|
|
48
|
+
private get postPublishContent();
|
|
49
|
+
buildRoutes(): BuildRoutesReturnType<PublishControllerContractsType>;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CONNECTOR_ID_HEADER, postPublishContract } from '@lokalise/connector-api-contracts';
|
|
2
|
+
import { buildFastifyPayloadRoute } from '@lokalise/fastify-api-contracts';
|
|
3
|
+
import { PublicNonRecoverableError } from '@lokalise/node-core';
|
|
4
|
+
import { AbstractController } from 'opinionated-machine';
|
|
5
|
+
import { resolveAdapter } from "../adapterResolver/resolveAdapter.js";
|
|
6
|
+
import "../commonTypes.js";
|
|
7
|
+
export class PublishController extends AbstractController {
|
|
8
|
+
static contracts = {
|
|
9
|
+
postPublish: postPublishContract,
|
|
10
|
+
};
|
|
11
|
+
adapters;
|
|
12
|
+
protectedRouteMetadataMapper;
|
|
13
|
+
constructor(dependencies) {
|
|
14
|
+
super();
|
|
15
|
+
this.adapters = dependencies.adapters;
|
|
16
|
+
this.protectedRouteMetadataMapper = dependencies.protectedRouteMetadataMapperFactory;
|
|
17
|
+
}
|
|
18
|
+
get postPublishContent() {
|
|
19
|
+
return buildFastifyPayloadRoute(postPublishContract, async (req, reply) => {
|
|
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);
|
|
22
|
+
if (publishResult.error) {
|
|
23
|
+
throw new PublicNonRecoverableError({
|
|
24
|
+
message: 'Could not publish content',
|
|
25
|
+
httpStatusCode: 500,
|
|
26
|
+
errorCode: 'PUBLISHING_ERROR',
|
|
27
|
+
details: {
|
|
28
|
+
erroredItemIdentifiers: publishResult.error,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
await reply.send({
|
|
33
|
+
statusCode: 200,
|
|
34
|
+
message: 'Content successfully updated',
|
|
35
|
+
});
|
|
36
|
+
}, this.protectedRouteMetadataMapper());
|
|
37
|
+
}
|
|
38
|
+
buildRoutes() {
|
|
39
|
+
return {
|
|
40
|
+
postPublish: this.postPublishContent,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=publishController.js.map
|
|
@@ -0,0 +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,MAAM,qBAAqB,CAAA;AAC/D,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,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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { AbstractController, type BuildRoutesReturnType } from 'opinionated-machine';
|
|
2
|
+
import type { ConnectorShellDependencies } from '../ConnectorShellModule.ts';
|
|
3
|
+
import '../commonTypes.ts';
|
|
4
|
+
type TranslateControllerContractsType = typeof TranslateController.contracts;
|
|
5
|
+
export declare class TranslateController extends AbstractController<TranslateControllerContractsType> {
|
|
6
|
+
static contracts: {
|
|
7
|
+
readonly postTranslate: import("@lokalise/api-contracts").PayloadRouteDefinition<import("zod/v4").ZodObject<{
|
|
8
|
+
locales: import("zod/v4").ZodArray<import("zod/v4").ZodString>;
|
|
9
|
+
items: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
10
|
+
uniqueId: import("zod/v4").ZodString;
|
|
11
|
+
groupId: import("zod/v4").ZodString;
|
|
12
|
+
metadata: import("zod/v4").ZodRecord<import("zod/v4").ZodAny, import("zod/v4").ZodAny>;
|
|
13
|
+
}, import("zod/v4/core").$strip>>;
|
|
14
|
+
defaultLocale: import("zod/v4").ZodString;
|
|
15
|
+
maxItems: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
|
|
16
|
+
cursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
17
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
18
|
+
items: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
19
|
+
uniqueId: import("zod/v4").ZodString;
|
|
20
|
+
groupId: import("zod/v4").ZodString;
|
|
21
|
+
metadata: import("zod/v4").ZodRecord<import("zod/v4").ZodAny, import("zod/v4").ZodAny>;
|
|
22
|
+
translations: import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodString>;
|
|
23
|
+
}, import("zod/v4/core").$strip>>;
|
|
24
|
+
payload: import("zod/v4").ZodOptional<import("zod/v4").ZodObject<{
|
|
25
|
+
message: import("zod/v4").ZodString;
|
|
26
|
+
errorCode: import("zod/v4").ZodString;
|
|
27
|
+
details: import("zod/v4").ZodObject<{
|
|
28
|
+
errors: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{}, import("zod/v4/core").$loose>>;
|
|
29
|
+
}, import("zod/v4/core").$strip>;
|
|
30
|
+
}, import("zod/v4/core").$strip>>;
|
|
31
|
+
hasMore: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
32
|
+
nextCursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
33
|
+
}, import("zod/v4/core").$strip>, undefined, undefined, import("zod/v4").ZodObject<{
|
|
34
|
+
'ce-config': import("zod/v4").ZodString;
|
|
35
|
+
'ce-auth': import("zod/v4").ZodString;
|
|
36
|
+
"x-connector-id": import("zod/v4").ZodString;
|
|
37
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
38
|
+
'x-continue-after': import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
39
|
+
}, import("zod/v4/core").$strip>, false, false, {
|
|
40
|
+
200: import("zod/v4").ZodObject<{
|
|
41
|
+
items: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{
|
|
42
|
+
uniqueId: import("zod/v4").ZodString;
|
|
43
|
+
groupId: import("zod/v4").ZodString;
|
|
44
|
+
metadata: import("zod/v4").ZodRecord<import("zod/v4").ZodAny, import("zod/v4").ZodAny>;
|
|
45
|
+
translations: import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodString>;
|
|
46
|
+
}, import("zod/v4/core").$strip>>;
|
|
47
|
+
payload: import("zod/v4").ZodOptional<import("zod/v4").ZodObject<{
|
|
48
|
+
message: import("zod/v4").ZodString;
|
|
49
|
+
errorCode: import("zod/v4").ZodString;
|
|
50
|
+
details: import("zod/v4").ZodObject<{
|
|
51
|
+
errors: import("zod/v4").ZodArray<import("zod/v4").ZodObject<{}, import("zod/v4/core").$loose>>;
|
|
52
|
+
}, import("zod/v4/core").$strip>;
|
|
53
|
+
}, import("zod/v4/core").$strip>>;
|
|
54
|
+
hasMore: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
55
|
+
nextCursor: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
56
|
+
}, import("zod/v4/core").$strip>;
|
|
57
|
+
403: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodObject<{
|
|
58
|
+
statusCode: import("zod/v4").ZodNumber;
|
|
59
|
+
payload: import("zod/v4").ZodObject<{
|
|
60
|
+
message: import("zod/v4").ZodString;
|
|
61
|
+
errorCode: import("zod/v4").ZodString;
|
|
62
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
63
|
+
}, import("zod/v4/core").$strip>;
|
|
64
|
+
}, import("zod/v4/core").$strip>, import("zod/v4").ZodObject<{
|
|
65
|
+
message: import("zod/v4").ZodString;
|
|
66
|
+
errorCode: import("zod/v4").ZodString;
|
|
67
|
+
details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodAny>>;
|
|
68
|
+
}, import("zod/v4/core").$strip>]>;
|
|
69
|
+
}>;
|
|
70
|
+
};
|
|
71
|
+
private readonly adapters;
|
|
72
|
+
private readonly protectedRouteMetadataMapper;
|
|
73
|
+
constructor(dependencies: ConnectorShellDependencies);
|
|
74
|
+
private get postTranslate();
|
|
75
|
+
buildRoutes(): BuildRoutesReturnType<TranslateControllerContractsType>;
|
|
76
|
+
}
|
|
77
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CONNECTOR_ID_HEADER, postTranslateContract } from '@lokalise/connector-api-contracts';
|
|
2
|
+
import { buildFastifyPayloadRoute } from '@lokalise/fastify-api-contracts';
|
|
3
|
+
import { AbstractController } from 'opinionated-machine';
|
|
4
|
+
import { resolveAdapter } from "../adapterResolver/resolveAdapter.js";
|
|
5
|
+
import "../commonTypes.js";
|
|
6
|
+
export class TranslateController extends AbstractController {
|
|
7
|
+
static contracts = {
|
|
8
|
+
postTranslate: postTranslateContract,
|
|
9
|
+
};
|
|
10
|
+
adapters;
|
|
11
|
+
protectedRouteMetadataMapper;
|
|
12
|
+
constructor(dependencies) {
|
|
13
|
+
super();
|
|
14
|
+
this.adapters = dependencies.adapters;
|
|
15
|
+
this.protectedRouteMetadataMapper = dependencies.protectedRouteMetadataMapperFactory;
|
|
16
|
+
}
|
|
17
|
+
get postTranslate() {
|
|
18
|
+
return buildFastifyPayloadRoute(postTranslateContract, async (req, reply) => {
|
|
19
|
+
const adapter = resolveAdapter(this.adapters, req.headers[CONNECTOR_ID_HEADER]);
|
|
20
|
+
const items = await adapter.translateService.getContent(req.integrationConfig, req.authConfig, req.body.locales, req.body.items, req.body.defaultLocale, req.reqContext);
|
|
21
|
+
await reply.send({ items });
|
|
22
|
+
}, this.protectedRouteMetadataMapper());
|
|
23
|
+
}
|
|
24
|
+
buildRoutes() {
|
|
25
|
+
return {
|
|
26
|
+
postTranslate: this.postTranslate,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=translateController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translateController.js","sourceRoot":"","sources":["../../src/translate/translateController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAA8B,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAKrE,OAAO,mBAAmB,CAAA;AAI1B,MAAM,OAAO,mBAAoB,SAAQ,kBAAoD;IACpF,MAAM,CAAC,SAAS,GAAG;QACxB,aAAa,EAAE,qBAAqB;KAC5B,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,aAAa;QACvB,OAAO,wBAAwB,CAC7B,qBAAqB,EACrB,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,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,CACrD,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,IAAI,CAAC,KAAK,EACd,GAAG,CAAC,IAAI,CAAC,aAAa,EACtB,GAAG,CAAC,UAAU,CACf,CAAA;YAED,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7B,CAAC,EACD,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAA;IACH,CAAC"}
|