@deenruv/replicate-simple-bg-plugin 1.0.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.
Files changed (66) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +54 -0
  3. package/dist/plugin-server/constants.d.ts +13 -0
  4. package/dist/plugin-server/constants.js +122 -0
  5. package/dist/plugin-server/entities/replicate-simple-bg.d.ts +11 -0
  6. package/dist/plugin-server/entities/replicate-simple-bg.js +49 -0
  7. package/dist/plugin-server/extensions/replicate-simple-bg.extension.d.ts +1 -0
  8. package/dist/plugin-server/extensions/replicate-simple-bg.extension.js +105 -0
  9. package/dist/plugin-server/graphql/generated-admin-types.d.ts +5807 -0
  10. package/dist/plugin-server/graphql/generated-admin-types.js +1030 -0
  11. package/dist/plugin-server/index.d.ts +5 -0
  12. package/dist/plugin-server/index.js +40 -0
  13. package/dist/plugin-server/resolvers/replicate-simple-bg-admin.resolver.d.ts +51 -0
  14. package/dist/plugin-server/resolvers/replicate-simple-bg-admin.resolver.js +105 -0
  15. package/dist/plugin-server/services/replicate-simple-bg.service.d.ts +45 -0
  16. package/dist/plugin-server/services/replicate-simple-bg.service.js +254 -0
  17. package/dist/plugin-server/types.d.ts +29 -0
  18. package/dist/plugin-server/types.js +2 -0
  19. package/dist/plugin-server/zeus/const.d.ts +6 -0
  20. package/dist/plugin-server/zeus/const.js +3714 -0
  21. package/dist/plugin-server/zeus/index.d.ts +18885 -0
  22. package/dist/plugin-server/zeus/index.js +1101 -0
  23. package/dist/plugin-server/zeus/typedDocumentNode.d.ts +3 -0
  24. package/dist/plugin-server/zeus/typedDocumentNode.js +13 -0
  25. package/dist/plugin-ui/components/FileUpload.d.ts +11 -0
  26. package/dist/plugin-ui/components/FileUpload.js +50 -0
  27. package/dist/plugin-ui/components/RoomStyleSelect.d.ts +7 -0
  28. package/dist/plugin-ui/components/RoomStyleSelect.js +19 -0
  29. package/dist/plugin-ui/components/RoomTypeSelect.d.ts +7 -0
  30. package/dist/plugin-ui/components/RoomTypeSelect.js +21 -0
  31. package/dist/plugin-ui/components/index.d.ts +1 -0
  32. package/dist/plugin-ui/components/index.js +1 -0
  33. package/dist/plugin-ui/constants.d.ts +1 -0
  34. package/dist/plugin-ui/constants.js +15 -0
  35. package/dist/plugin-ui/graphql/mutations.d.ts +22 -0
  36. package/dist/plugin-ui/graphql/mutations.js +21 -0
  37. package/dist/plugin-ui/graphql/queries.d.ts +87 -0
  38. package/dist/plugin-ui/graphql/queries.js +32 -0
  39. package/dist/plugin-ui/graphql/selectors.d.ts +43 -0
  40. package/dist/plugin-ui/graphql/selectors.js +38 -0
  41. package/dist/plugin-ui/index.d.ts +1 -0
  42. package/dist/plugin-ui/index.js +33 -0
  43. package/dist/plugin-ui/locales/en/index.d.ts +67 -0
  44. package/dist/plugin-ui/locales/en/index.js +2 -0
  45. package/dist/plugin-ui/locales/en/simpleBg.json +66 -0
  46. package/dist/plugin-ui/locales/pl/index.d.ts +67 -0
  47. package/dist/plugin-ui/locales/pl/index.js +2 -0
  48. package/dist/plugin-ui/locales/pl/simpleBg.json +66 -0
  49. package/dist/plugin-ui/pages/ReplicatePage.d.ts +2 -0
  50. package/dist/plugin-ui/pages/ReplicatePage.js +282 -0
  51. package/dist/plugin-ui/pages/ReplicateProductSidebar.d.ts +2 -0
  52. package/dist/plugin-ui/pages/ReplicateProductSidebar.js +186 -0
  53. package/dist/plugin-ui/translation-ns.d.ts +1 -0
  54. package/dist/plugin-ui/translation-ns.js +1 -0
  55. package/dist/plugin-ui/tsconfig.json +18 -0
  56. package/dist/plugin-ui/types.d.ts +35 -0
  57. package/dist/plugin-ui/types.js +15 -0
  58. package/dist/plugin-ui/zeus/const.d.ts +6 -0
  59. package/dist/plugin-ui/zeus/const.js +3711 -0
  60. package/dist/plugin-ui/zeus/index.d.ts +18885 -0
  61. package/dist/plugin-ui/zeus/index.js +1093 -0
  62. package/dist/plugin-ui/zeus/scalars.d.ts +18 -0
  63. package/dist/plugin-ui/zeus/scalars.js +25 -0
  64. package/dist/plugin-ui/zeus/typedDocumentNode.d.ts +3 -0
  65. package/dist/plugin-ui/zeus/typedDocumentNode.js +9 -0
  66. package/package.json +53 -0
@@ -0,0 +1,5 @@
1
+ import { ReplicateSimpleBGOptions } from "./types.js";
2
+ export declare class ReplicateSimpleBGPlugin {
3
+ private static options;
4
+ static init(options: ReplicateSimpleBGOptions): typeof ReplicateSimpleBGPlugin;
5
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ReplicateSimpleBGPlugin = void 0;
10
+ const core_1 = require("@deenruv/core");
11
+ const replicate_simple_bg_admin_resolver_js_1 = require("./resolvers/replicate-simple-bg-admin.resolver.js");
12
+ const replicate_simple_bg_service_js_1 = require("./services/replicate-simple-bg.service.js");
13
+ const constants_js_1 = require("./constants.js");
14
+ const replicate_simple_bg_extension_js_1 = require("./extensions/replicate-simple-bg.extension.js");
15
+ const replicate_simple_bg_js_1 = require("./entities/replicate-simple-bg.js");
16
+ let ReplicateSimpleBGPlugin = class ReplicateSimpleBGPlugin {
17
+ static init(options) {
18
+ this.options = options;
19
+ return this;
20
+ }
21
+ };
22
+ exports.ReplicateSimpleBGPlugin = ReplicateSimpleBGPlugin;
23
+ exports.ReplicateSimpleBGPlugin = ReplicateSimpleBGPlugin = __decorate([
24
+ (0, core_1.DeenruvPlugin)({
25
+ compatibility: "^0.0.20",
26
+ imports: [core_1.PluginCommonModule],
27
+ entities: [replicate_simple_bg_js_1.ReplicateSimpleBgEntity],
28
+ providers: [
29
+ {
30
+ provide: constants_js_1.REPLICATE_SIMPLE_BG_PLUGIN_OPTIONS,
31
+ useFactory: () => ReplicateSimpleBGPlugin.options,
32
+ },
33
+ replicate_simple_bg_service_js_1.ReplicateSimpleBGService,
34
+ ],
35
+ adminApiExtensions: {
36
+ schema: replicate_simple_bg_extension_js_1.AdminExtension,
37
+ resolvers: [replicate_simple_bg_admin_resolver_js_1.ReplicateSimpleBGAdminResolver],
38
+ },
39
+ })
40
+ ], ReplicateSimpleBGPlugin);
@@ -0,0 +1,51 @@
1
+ import { ReplicateSimpleBGService } from "../services/replicate-simple-bg.service.js";
2
+ import { RequestContext } from "@deenruv/core";
3
+ import { StartGenerateSimpleBGInput, AssignPredictionToProductInput } from "../graphql/generated-admin-types.js";
4
+ export declare class ReplicateSimpleBGAdminResolver {
5
+ private replicateSimpleBGService;
6
+ constructor(replicateSimpleBGService: ReplicateSimpleBGService);
7
+ startGenerateSimpleBg({ input }: {
8
+ input: StartGenerateSimpleBGInput;
9
+ }, ctx: RequestContext): Promise<import("@deenruv/core").ID | undefined>;
10
+ getPredictionAsset({ input }: {
11
+ input: AssignPredictionToProductInput;
12
+ }, ctx: RequestContext): Promise<Error | import("@deenruv/core").Asset | undefined>;
13
+ getSimpleBgID(ctx: RequestContext, { input }: {
14
+ input: {
15
+ prediction_simple_bg_entity_id: string;
16
+ };
17
+ }): Promise<import("@deenruv/core").ID | undefined>;
18
+ getSimpleBgPredictions(ctx: RequestContext, { options }: {
19
+ options: any;
20
+ }): Promise<import("@deenruv/core").PaginatedList<import("../entities/replicate-simple-bg.js").ReplicateSimpleBgEntity>>;
21
+ getSimpleBgItem(ctx: RequestContext, { id }: {
22
+ id: string;
23
+ }): Promise<Error | {
24
+ image: string;
25
+ prediction_simple_bg_id: string;
26
+ output: string;
27
+ status: string;
28
+ finishedAt: Date | null;
29
+ roomType: string;
30
+ roomStyle: string;
31
+ id: import("@deenruv/core").ID;
32
+ createdAt: Date;
33
+ updatedAt: Date;
34
+ }>;
35
+ getSimpleBgThemeAsset(parent: {
36
+ url: string;
37
+ }): Promise<{
38
+ url: string;
39
+ }>;
40
+ getSimpleBgOptions(): Promise<{
41
+ roomTypes: {
42
+ value: string;
43
+ label: string;
44
+ }[];
45
+ roomThemes: {
46
+ value: string;
47
+ label: string;
48
+ image: string;
49
+ }[];
50
+ }>;
51
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ReplicateSimpleBGAdminResolver = void 0;
16
+ const graphql_1 = require("@nestjs/graphql");
17
+ const replicate_simple_bg_service_js_1 = require("../services/replicate-simple-bg.service.js");
18
+ const core_1 = require("@deenruv/core");
19
+ let ReplicateSimpleBGAdminResolver = class ReplicateSimpleBGAdminResolver {
20
+ constructor(replicateSimpleBGService) {
21
+ this.replicateSimpleBGService = replicateSimpleBGService;
22
+ }
23
+ async startGenerateSimpleBg({ input }, ctx) {
24
+ return this.replicateSimpleBGService.startModelRun(ctx, input);
25
+ }
26
+ async getPredictionAsset({ input }, ctx) {
27
+ return this.replicateSimpleBGService.getPredictionAsset(ctx, input);
28
+ }
29
+ async getSimpleBgID(ctx, { input }) {
30
+ return this.replicateSimpleBGService.getSimpleBgID(ctx, input.prediction_simple_bg_entity_id);
31
+ }
32
+ async getSimpleBgPredictions(ctx, { options }) {
33
+ return this.replicateSimpleBGService.getSimpleBgItems(ctx, options);
34
+ }
35
+ async getSimpleBgItem(ctx, { id }) {
36
+ return this.replicateSimpleBGService.getSimpleBgItem(ctx, id);
37
+ }
38
+ async getSimpleBgThemeAsset(parent) {
39
+ const key = parent.url;
40
+ const baseUrl = String(this.replicateSimpleBGService.getSimpleBgThemesAsset());
41
+ const url = key.startsWith(baseUrl) ? key : [baseUrl, key].join("/");
42
+ return { url };
43
+ }
44
+ async getSimpleBgOptions() {
45
+ return this.replicateSimpleBGService.getSimpleBgOptions();
46
+ }
47
+ };
48
+ exports.ReplicateSimpleBGAdminResolver = ReplicateSimpleBGAdminResolver;
49
+ __decorate([
50
+ (0, graphql_1.Mutation)(),
51
+ __param(0, (0, graphql_1.Args)()),
52
+ __param(1, (0, core_1.Ctx)()),
53
+ __metadata("design:type", Function),
54
+ __metadata("design:paramtypes", [Object, core_1.RequestContext]),
55
+ __metadata("design:returntype", Promise)
56
+ ], ReplicateSimpleBGAdminResolver.prototype, "startGenerateSimpleBg", null);
57
+ __decorate([
58
+ (0, graphql_1.Mutation)(),
59
+ __param(0, (0, graphql_1.Args)()),
60
+ __param(1, (0, core_1.Ctx)()),
61
+ __metadata("design:type", Function),
62
+ __metadata("design:paramtypes", [Object, core_1.RequestContext]),
63
+ __metadata("design:returntype", Promise)
64
+ ], ReplicateSimpleBGAdminResolver.prototype, "getPredictionAsset", null);
65
+ __decorate([
66
+ (0, graphql_1.Query)(),
67
+ __param(0, (0, core_1.Ctx)()),
68
+ __param(1, (0, graphql_1.Args)()),
69
+ __metadata("design:type", Function),
70
+ __metadata("design:paramtypes", [core_1.RequestContext, Object]),
71
+ __metadata("design:returntype", Promise)
72
+ ], ReplicateSimpleBGAdminResolver.prototype, "getSimpleBgID", null);
73
+ __decorate([
74
+ (0, graphql_1.Query)(),
75
+ __param(0, (0, core_1.Ctx)()),
76
+ __param(1, (0, graphql_1.Args)()),
77
+ __metadata("design:type", Function),
78
+ __metadata("design:paramtypes", [core_1.RequestContext, Object]),
79
+ __metadata("design:returntype", Promise)
80
+ ], ReplicateSimpleBGAdminResolver.prototype, "getSimpleBgPredictions", null);
81
+ __decorate([
82
+ (0, graphql_1.Query)(),
83
+ __param(0, (0, core_1.Ctx)()),
84
+ __param(1, (0, graphql_1.Args)()),
85
+ __metadata("design:type", Function),
86
+ __metadata("design:paramtypes", [core_1.RequestContext, Object]),
87
+ __metadata("design:returntype", Promise)
88
+ ], ReplicateSimpleBGAdminResolver.prototype, "getSimpleBgItem", null);
89
+ __decorate([
90
+ (0, graphql_1.Query)(),
91
+ __param(0, (0, graphql_1.Args)()),
92
+ __metadata("design:type", Function),
93
+ __metadata("design:paramtypes", [Object]),
94
+ __metadata("design:returntype", Promise)
95
+ ], ReplicateSimpleBGAdminResolver.prototype, "getSimpleBgThemeAsset", null);
96
+ __decorate([
97
+ (0, graphql_1.Query)(),
98
+ __metadata("design:type", Function),
99
+ __metadata("design:paramtypes", []),
100
+ __metadata("design:returntype", Promise)
101
+ ], ReplicateSimpleBGAdminResolver.prototype, "getSimpleBgOptions", null);
102
+ exports.ReplicateSimpleBGAdminResolver = ReplicateSimpleBGAdminResolver = __decorate([
103
+ (0, graphql_1.Resolver)(),
104
+ __metadata("design:paramtypes", [replicate_simple_bg_service_js_1.ReplicateSimpleBGService])
105
+ ], ReplicateSimpleBGAdminResolver);
@@ -0,0 +1,45 @@
1
+ import { AssetService, RequestContext, ID, TransactionalConnection, ListQueryOptions, PaginatedList, ListQueryBuilder } from "@deenruv/core";
2
+ import { ReplicateSimpleBGOptions } from "../types.js";
3
+ import { StartGenerateSimpleBGInput, AssignPredictionToProductInput } from "../graphql/generated-admin-types.js";
4
+ import { ReplicateSimpleBgEntity } from "../entities/replicate-simple-bg.js";
5
+ import { PredictionSimpleBgStatus } from "../zeus/index.js";
6
+ export declare class ReplicateSimpleBGService {
7
+ private readonly options;
8
+ private readonly connection;
9
+ private readonly assetService;
10
+ private readonly listQueryBuilder;
11
+ constructor(options: ReplicateSimpleBGOptions, connection: TransactionalConnection, assetService: AssetService, listQueryBuilder: ListQueryBuilder);
12
+ getSimpleBgID(ctx: RequestContext, prediction_simple_bg_id: string): Promise<ID | undefined>;
13
+ startModelRun(ctx: RequestContext, input: StartGenerateSimpleBGInput): Promise<ID | undefined>;
14
+ checkAndUpdatePredictionStatus(ctx: RequestContext, prediction_simple_bg_id: string): Promise<{
15
+ status: PredictionSimpleBgStatus;
16
+ output: string;
17
+ } | undefined>;
18
+ getSimpleBgItems(ctx: RequestContext, options?: ListQueryOptions<ReplicateSimpleBgEntity>): Promise<PaginatedList<ReplicateSimpleBgEntity>>;
19
+ getSimpleBgItem(ctx: RequestContext, id: string): Promise<Error | {
20
+ image: string;
21
+ prediction_simple_bg_id: string;
22
+ output: string;
23
+ status: string;
24
+ finishedAt: Date | null;
25
+ roomType: string;
26
+ roomStyle: string;
27
+ id: ID;
28
+ createdAt: Date;
29
+ updatedAt: Date;
30
+ }>;
31
+ getSimpleBgThemesAsset(): string;
32
+ getSimpleBgOptions(): {
33
+ roomTypes: {
34
+ value: string;
35
+ label: string;
36
+ }[];
37
+ roomThemes: {
38
+ value: string;
39
+ label: string;
40
+ image: string;
41
+ }[];
42
+ };
43
+ getPredictionAsset(ctx: RequestContext, input: AssignPredictionToProductInput): Promise<Error | import("@deenruv/core").Asset | undefined>;
44
+ getSimpleBgAssetIDByName(ctx: RequestContext, source: string): Promise<ID>;
45
+ }
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ReplicateSimpleBGService = void 0;
19
+ const core_1 = require("@deenruv/core");
20
+ const common_1 = require("@nestjs/common");
21
+ const constants_js_1 = require("../constants.js");
22
+ const replicate_simple_bg_js_1 = require("../entities/replicate-simple-bg.js");
23
+ const axios_1 = __importDefault(require("axios"));
24
+ const index_js_1 = require("../zeus/index.js");
25
+ const fs_1 = __importDefault(require("fs"));
26
+ const path_1 = __importDefault(require("path"));
27
+ const promises_1 = require("fs/promises");
28
+ const constants_js_2 = require("../constants.js");
29
+ let ReplicateSimpleBGService = class ReplicateSimpleBGService {
30
+ constructor(options, connection, assetService, listQueryBuilder) {
31
+ this.options = options;
32
+ this.connection = connection;
33
+ this.assetService = assetService;
34
+ this.listQueryBuilder = listQueryBuilder;
35
+ if (!this.options.envs) {
36
+ throw new Error("Replicate: options not set");
37
+ }
38
+ if (!this.options.envs["apiToken"]) {
39
+ throw new Error("Replicate: apiToken not set");
40
+ }
41
+ if (!this.options.envs["deploymentName"]) {
42
+ throw new Error("Replicate: deploymentName not set");
43
+ }
44
+ if (!this.options.envs["assetPrefix"]) {
45
+ throw new Error("Replicate: assetPrefix not set");
46
+ }
47
+ }
48
+ async getSimpleBgID(ctx, prediction_simple_bg_id) {
49
+ const entity = await this.connection
50
+ .getRepository(ctx, replicate_simple_bg_js_1.ReplicateSimpleBgEntity)
51
+ .findOne({
52
+ where: { id: prediction_simple_bg_id },
53
+ });
54
+ return entity ? entity.id : undefined;
55
+ }
56
+ async startModelRun(ctx, input) {
57
+ var _a, _b;
58
+ const { assetId, roomType, roomStyle, prompt: additionalPrompt } = input;
59
+ try {
60
+ const imageAsset = await this.assetService.findOne(ctx, assetId);
61
+ if (!(imageAsset === null || imageAsset === void 0 ? void 0 : imageAsset.source)) {
62
+ core_1.Logger.error("Asset not found", constants_js_1.LOGGER_CTX);
63
+ return;
64
+ }
65
+ const assetUrl = [this.options["envs"]["assetPrefix"], imageAsset.source]
66
+ .filter((v) => !!v)
67
+ .join("/");
68
+ const assetResponse = await axios_1.default.get(assetUrl, {
69
+ responseType: "arraybuffer",
70
+ });
71
+ const assetBase64 = Buffer.from(assetResponse.data, "binary").toString("base64");
72
+ const prompt = [
73
+ constants_js_2.DEFAULT_PROMPT,
74
+ (_a = this.options.prompts) === null || _a === void 0 ? void 0 : _a.positive,
75
+ additionalPrompt,
76
+ ]
77
+ .filter((v) => !!v)
78
+ .join(", ");
79
+ const n_prompt = [constants_js_2.DEFAULT_NEGATIVE_PROMPT, (_b = this.options.prompts) === null || _b === void 0 ? void 0 : _b.negative]
80
+ .filter((v) => !!v)
81
+ .join(", ");
82
+ const seed = this.options.seed ? this.options.seed : -1;
83
+ const response = await axios_1.default.post(`https://api.replicate.com/v1/deployments/aexol-studio/${this.options.envs["deploymentName"]}/predictions`, {
84
+ input: {
85
+ seed,
86
+ image: `data:image/png;base64,${assetBase64}`,
87
+ prompt: [roomType, roomStyle, prompt].join(", "),
88
+ negative_prompt: n_prompt,
89
+ },
90
+ }, {
91
+ headers: {
92
+ Authorization: `Bearer ${this.options["envs"]["apiToken"]}`,
93
+ "Content-Type": `application/json`,
94
+ },
95
+ });
96
+ const entity = await this.connection
97
+ .getRepository(ctx, replicate_simple_bg_js_1.ReplicateSimpleBgEntity)
98
+ .save({
99
+ prediction_simple_bg_id: response.data.id,
100
+ status: response.data.status,
101
+ roomType,
102
+ roomStyle,
103
+ });
104
+ return entity.id;
105
+ }
106
+ catch (error) {
107
+ core_1.Logger.error("API call to replicate failed", constants_js_1.LOGGER_CTX);
108
+ console.error("Error:", error);
109
+ }
110
+ }
111
+ async checkAndUpdatePredictionStatus(ctx, prediction_simple_bg_id) {
112
+ var _a;
113
+ try {
114
+ const response = await axios_1.default.get(`https://api.replicate.com/v1/predictions/${prediction_simple_bg_id}`, {
115
+ headers: {
116
+ Authorization: `Bearer ${this.options["envs"]["apiToken"]}`,
117
+ "Content-Type": "application/json",
118
+ },
119
+ });
120
+ const status = response.data.status;
121
+ const image = response.data.output;
122
+ if ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.error) {
123
+ await this.connection
124
+ .getRepository(ctx, replicate_simple_bg_js_1.ReplicateSimpleBgEntity)
125
+ .update({ prediction_simple_bg_id }, {
126
+ status: index_js_1.PredictionSimpleBgStatus.failed,
127
+ finishedAt: response.data.completed_at,
128
+ });
129
+ return { status: index_js_1.PredictionSimpleBgStatus.failed, output: "" };
130
+ }
131
+ if ([index_js_1.PredictionSimpleBgStatus.succeeded].includes(status) &&
132
+ response.data.output) {
133
+ const formattedTimestamp = response.data.completed_at
134
+ .replace(/:/g, "")
135
+ .toLowerCase();
136
+ const assetName = `output-${formattedTimestamp}.png`;
137
+ const fileResponse = await axios_1.default.get(image, {
138
+ responseType: "arraybuffer",
139
+ });
140
+ const tempDir = await (0, promises_1.mkdtemp)("replicate-simple-bg");
141
+ const tempFilePath = path_1.default.join(tempDir, assetName);
142
+ fs_1.default.writeFileSync(tempFilePath, fileResponse.data);
143
+ await this.assetService.createFromFileStream(fs_1.default.createReadStream(tempFilePath), ctx);
144
+ await (0, promises_1.rm)(tempDir, { recursive: true, force: true });
145
+ const resultAsset = await this.assetService.findAll(ctx, {
146
+ filter: { name: { eq: assetName } },
147
+ });
148
+ const asset = resultAsset.items[0];
149
+ if (!asset) {
150
+ throw new Error("Asset not found");
151
+ }
152
+ await this.connection
153
+ .getRepository(ctx, replicate_simple_bg_js_1.ReplicateSimpleBgEntity)
154
+ .update({ prediction_simple_bg_id }, {
155
+ status: status,
156
+ output: asset.source,
157
+ finishedAt: response.data.completed_at,
158
+ });
159
+ return {
160
+ status: status,
161
+ output: asset.source,
162
+ };
163
+ }
164
+ }
165
+ catch (error) {
166
+ core_1.Logger.error("API call to replicate failed", constants_js_1.LOGGER_CTX);
167
+ console.error("Error:", error);
168
+ }
169
+ }
170
+ async getSimpleBgItems(ctx, options) {
171
+ const qb = this.listQueryBuilder.build(replicate_simple_bg_js_1.ReplicateSimpleBgEntity, options, {
172
+ ctx,
173
+ });
174
+ const [items, totalItems] = await qb.getManyAndCount();
175
+ return { items, totalItems };
176
+ }
177
+ async getSimpleBgItem(ctx, id) {
178
+ const prediction = await this.connection
179
+ .getRepository(ctx, replicate_simple_bg_js_1.ReplicateSimpleBgEntity)
180
+ .findOne({ where: { id: id } });
181
+ if (!prediction) {
182
+ return new Error("Prediction not found");
183
+ }
184
+ if ([
185
+ index_js_1.PredictionSimpleBgStatus.preprocessing,
186
+ index_js_1.PredictionSimpleBgStatus.starting,
187
+ ].includes(prediction.status)) {
188
+ const updated_prediction = await this.checkAndUpdatePredictionStatus(ctx, prediction.prediction_simple_bg_id);
189
+ if (!updated_prediction) {
190
+ return Object.assign(Object.assign({}, prediction), { image: "" });
191
+ }
192
+ }
193
+ const image = [this.options.envs["assetPrefix"], prediction.output].join("/");
194
+ return Object.assign(Object.assign({}, prediction), { image });
195
+ }
196
+ getSimpleBgThemesAsset() {
197
+ return this.options.envs["assetPrefix"];
198
+ }
199
+ getSimpleBgOptions() {
200
+ const roomThemes = [
201
+ ...constants_js_2.DEFAULT_ROOM_THEME,
202
+ ...(this.options.roomTheme || []),
203
+ ].map((theme) => {
204
+ if (!theme.image.startsWith(this.options.envs["assetPrefix"])) {
205
+ return Object.assign(Object.assign({}, theme), { image: [this.options.envs["assetPrefix"], theme.image].join("/") });
206
+ }
207
+ return theme;
208
+ });
209
+ const roomTypes = [...constants_js_2.DEFAULT_ROOM_TYPE, ...(this.options.roomType || [])];
210
+ return { roomTypes, roomThemes };
211
+ }
212
+ async getPredictionAsset(ctx, input) {
213
+ var _a;
214
+ const prediction = await this.connection
215
+ .getRepository(ctx, replicate_simple_bg_js_1.ReplicateSimpleBgEntity)
216
+ .findOne({ where: { id: input.predictionId } });
217
+ if (!prediction) {
218
+ return new Error("Prediction not found");
219
+ }
220
+ const prediction_asset = await this.connection
221
+ .getRepository(ctx, replicate_simple_bg_js_1.ReplicateSimpleBgEntity)
222
+ .findOne({
223
+ where: { id: input.predictionId },
224
+ });
225
+ if (!prediction_asset) {
226
+ throw new Error("Asset not found for prediction output");
227
+ }
228
+ const assets = await this.assetService.findAll(ctx, {
229
+ filter: { source: { eq: prediction_asset.output } },
230
+ });
231
+ return (_a = assets.items) === null || _a === void 0 ? void 0 : _a.at(0);
232
+ }
233
+ async getSimpleBgAssetIDByName(ctx, source) {
234
+ const assets = await this.assetService.findAll(ctx, {
235
+ filter: { name: { eq: source } },
236
+ });
237
+ const asset = assets.items[0];
238
+ if (!asset) {
239
+ throw new Error("Asset not found");
240
+ }
241
+ return asset.id;
242
+ }
243
+ };
244
+ exports.ReplicateSimpleBGService = ReplicateSimpleBGService;
245
+ exports.ReplicateSimpleBGService = ReplicateSimpleBGService = __decorate([
246
+ (0, common_1.Injectable)(),
247
+ __param(0, (0, common_1.Inject)(constants_js_1.REPLICATE_SIMPLE_BG_PLUGIN_OPTIONS)),
248
+ __param(1, (0, common_1.Inject)(core_1.TransactionalConnection)),
249
+ __param(2, (0, common_1.Inject)(core_1.AssetService)),
250
+ __param(3, (0, common_1.Inject)(core_1.ListQueryBuilder)),
251
+ __metadata("design:paramtypes", [Object, core_1.TransactionalConnection,
252
+ core_1.AssetService,
253
+ core_1.ListQueryBuilder])
254
+ ], ReplicateSimpleBGService);
@@ -0,0 +1,29 @@
1
+ import { ID, SerializedRequestContext } from "@deenruv/core";
2
+ export interface ReplicateSimpleBGOptions {
3
+ envs: {
4
+ deploymentName: string;
5
+ apiToken: string;
6
+ assetPrefix: string;
7
+ };
8
+ prompts?: {
9
+ positive?: string;
10
+ negative?: string;
11
+ };
12
+ seed?: number;
13
+ roomType?: Array<{
14
+ value: string;
15
+ label: string;
16
+ }>;
17
+ roomTheme?: Array<{
18
+ value: string;
19
+ label: string;
20
+ image: string;
21
+ }>;
22
+ }
23
+ export interface ModelRunQueueType {
24
+ serializedContext: SerializedRequestContext;
25
+ assetId: string;
26
+ roomType: string;
27
+ roomStyle: string;
28
+ replicateSimpleBGEntityID: ID;
29
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export declare const AllTypesProps: Record<string, any>;
2
+ export declare const ReturnTypes: Record<string, any>;
3
+ export declare const Ops: {
4
+ query: "Query";
5
+ mutation: "Mutation";
6
+ };