Skip to content

Commit b0ad162

Browse files
authored
gen fill, gen bg replace - prevent decode with percentage char (#64)
1 parent 09c0cd0 commit b0ad162

File tree

5 files changed

+32
-3
lines changed

5 files changed

+32
-3
lines changed

__TESTS__/unit/fromJson/effect.fromJson.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,14 @@ describe('effect.fromJson', () => {
5151
{ actionType: 'enhance' },
5252
{ actionType: 'generativeBackgroundReplace', prompt: 'dog' },
5353
{ actionType: 'generativeBackgroundReplace', prompt: 'dog, dog (dog)' },
54+
{ actionType: 'generativeBackgroundReplace', prompt: '!@#$%^&*()_+{}|":?><' },
5455
{ actionType: 'generativeBackgroundReplace'},
5556
{ actionType: 'extract', 'prompts': 'blue sky' },
5657
{ actionType: 'extract', 'prompts': ['blue sky', 'yellow sun'], detectMultiple: true },
5758
{ actionType: 'extract', 'prompts': ['green grass'], mode: 'mask', invert: true },
5859
{ actionType: 'extract', 'prompts': ['yellow sun', 'green grass'], mode: 'content' },
5960
{ actionType: 'pad', 'dimensions': { width: 100, height: 200 }, 'background': { backgroundType: 'generativeFill', prompt: 'some; test (123!)'} },
61+
{ actionType: 'pad', 'dimensions': { width: 140, height: 240 }, 'background': { backgroundType: 'generativeFill', prompt: 'some%test ? (123/)'} },
6062
]});
6163

6264
expect(transformation.toString().split('/')).toStrictEqual([
@@ -108,12 +110,14 @@ describe('effect.fromJson', () => {
108110
'e_enhance',
109111
'e_gen_background_replace:prompt_dog',
110112
'e_gen_background_replace:prompt_dog%2C dog %28dog%29',
113+
'e_gen_background_replace:prompt_%21%40%23%24%25%5E%26%2A%28%29%5F%2B%7B%7D%7C%22%3A%3F%3E%3C',
111114
'e_gen_background_replace',
112115
'e_extract:prompt_blue sky',
113116
'e_extract:prompt_(blue sky;yellow sun);multiple_true',
114117
'e_extract:prompt_green grass;mode_mask;invert_true',
115118
'e_extract:prompt_(yellow sun;green grass);mode_content',
116119
'b_gen_fill:prompt_some%3B test %28123%21%29,c_pad,h_200,w_100',
120+
'b_gen_fill:prompt_some%25test %3F %28123%2F%29,c_pad,h_240,w_140',
117121
]);
118122
});
119123
});

__TESTS__/unit/toJson/effect.toJson.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,7 @@ describe('Effect toJson()', () => {
490490
const transformation = new Transformation()
491491
.addAction(Effect.generativeBackgroundReplace().prompt('dog'))
492492
.addAction(Effect.generativeBackgroundReplace().prompt('test%2C test %28test%21%40%23%3F%29'))
493+
.addAction(Effect.generativeBackgroundReplace().prompt('%21%40%23%24%25%5E%26%2A%28%29%5F%2B%7D%7B%3A%22%7C%3F%3E%3C%7E'))
493494
.addAction(Effect.generativeBackgroundReplace());
494495

495496
expect(transformation.toJson()).toStrictEqual({
@@ -502,6 +503,10 @@ describe('Effect toJson()', () => {
502503
actionType: 'generativeBackgroundReplace',
503504
prompt: 'test, test (test!@#?)',
504505
},
506+
{
507+
actionType: 'generativeBackgroundReplace',
508+
prompt: '!@#$%^&*()_+}{:"|?><~',
509+
},
505510
{
506511
actionType: 'generativeBackgroundReplace',
507512
},

__TESTS__/unit/toJson/resize.toJson.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ describe('resize.toJson()', () => {
450450
const transformation = new Transformation()
451451
.addAction(Resize.pad(400).background(Background.generativeFill()))
452452
.addAction(Resize.pad(200).background(Background.generativeFill().prompt('strawberry donuts')))
453+
.addAction(Resize.pad(500).background(Background.generativeFill().prompt('%21%40%23%24%25%5E%26%2A%28%29%5F%2B%7D%7B%3A%22%7C%3F%3E%3C%7E')))
453454
.addAction(Resize.pad(300).background(Background.generativeFill().prompt('donuts %28strawberry%29%2C with jam')));
454455

455456

@@ -476,6 +477,16 @@ describe('resize.toJson()', () => {
476477
prompt: 'strawberry donuts'
477478
}
478479
},
480+
{
481+
actionType: 'pad',
482+
dimensions: {
483+
width: 500
484+
},
485+
background: {
486+
backgroundType: 'generativeFill',
487+
prompt: '!@#$%^&*()_+}{:"|?><~'
488+
}
489+
},
479490
{
480491
actionType: 'pad',
481492
dimensions: {

src/actions/effect/GenerativeBackgroundReplace.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@ class GenerativeBackgroundReplace extends Action {
1818
}
1919

2020
prompt(value: string): GenerativeBackgroundReplace {
21+
try {
22+
this._actionModel.prompt = decodeURIComponent(value);
23+
} catch {
24+
this._actionModel.prompt = value;
25+
}
26+
2127
this._prompt = value;
22-
this._actionModel.prompt = decodeURIComponent(value);
23-
2428
return this;
2529
}
2630

src/qualifiers/background/shared/BackgroundGenerativeFillQualifier.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ class BackgroundGenerativeFillQualifier extends BackgroundQualifier {
1616
}
1717

1818
prompt(prompt: string): BackgroundGenerativeFillQualifier {
19-
this._prompt = decodeURIComponent(prompt);
19+
try {
20+
this._prompt = decodeURIComponent(prompt);
21+
} catch {
22+
this._prompt = prompt;
23+
}
24+
2025
return this;
2126
}
2227

0 commit comments

Comments
 (0)