new(basic.gblib): FILL keyword can now template images and AS IMAGE can convert a DOCX to a PNG.

This commit is contained in:
rodrigorodriguez 2023-02-05 14:41:33 -03:00
parent 1c62edcfe6
commit d4845dc062
2 changed files with 60 additions and 52 deletions

View file

@ -312,21 +312,31 @@ export class AdminDialog extends IGBDialog {
} }
await CollectionUtil.asyncForEach(packages, async packageName => { await CollectionUtil.asyncForEach(packages, async packageName => {
let cmd1; let cmd1;
if (packageName.indexOf('.') !== -1) {
cmd1 = `deployPackage ${process.env.STORAGE_SITE} /${process.env.STORAGE_LIBRARY}/${botId}.gbai/${packageName}`; if (
} else { packageName.indexOf('gbdialog') !== -1 ||
cmd1 = `deployPackage ${packageName}`; packageName.indexOf('gbkb') !== -1 ||
} packageName.indexOf('gbot') !== -1 ||
if ( packageName.indexOf('gbtheme') !== -1
(await (deployer as any).getStoragePackageByName(min.instance.instanceId, packageName)) !== null && ) {
!process.env.DONT_DOWNLOAD packageName = `${min.botId}.${packageName}`;
) { }
const cmd2 = `undeployPackage ${packageName}`;
await GBAdminService.undeployPackageCommand(cmd2, min); if (packageName.indexOf('.') !== -1) {
} cmd1 = `deployPackage ${process.env.STORAGE_SITE} /${process.env.STORAGE_LIBRARY}/${botId}.gbai/${packageName}`;
await GBAdminService.deployPackageCommand(min, cmd1, deployer); } else {
await min.conversationalService.sendText(min, step, `Finished publishing ${packageName}.`); cmd1 = `deployPackage ${packageName}`;
}
if (
(await (deployer as any).getStoragePackageByName(min.instance.instanceId, packageName)) !== null &&
!process.env.DONT_DOWNLOAD
) {
const cmd2 = `undeployPackage ${packageName}`;
await GBAdminService.undeployPackageCommand(cmd2, min);
}
await GBAdminService.deployPackageCommand(min, cmd1, deployer);
await min.conversationalService.sendText(min, step, `Finished publishing ${packageName}.`);
}); });
await min.conversationalService.sendText(min, step, Messages[locale].publish_success); await min.conversationalService.sendText(min, step, Messages[locale].publish_success);
if (!step.activeDialog.state.options.confirm) { if (!step.activeDialog.state.options.confirm) {
@ -357,7 +367,7 @@ export class AdminDialog extends IGBDialog {
if (!result && min.instance.params) { if (!result && min.instance.params) {
const params = JSON.parse(min.instance.params); const params = JSON.parse(min.instance.params);
if (params){ if (params) {
return list.includes(params['Can Publish']); return list.includes(params['Can Publish']);
} }
} }

View file

@ -71,9 +71,7 @@ export class KeywordsExpressions {
}; };
/** /**
* Returns the page object. * Returns the list of BASIC keyword and their JS match.
*
* @example OPEN "https://wikipedia.org"
*/ */
public static getKeywords() { public static getKeywords() {
@ -95,7 +93,7 @@ export class KeywordsExpressions {
keywords[i++] = [/^\s*\'.*/gim, '']; keywords[i++] = [/^\s*\'.*/gim, ''];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*SELECT\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*SELECT\s*(.*)/gim,
($0, $1, $2) => { ($0, $1, $2) => {
let tableName = /\s*FROM\s*(\w+)/.exec($2)[1]; let tableName = /\s*FROM\s*(\w+)/.exec($2)[1];
let sql = `SELECT ${$2}`.replace(tableName, '?'); let sql = `SELECT ${$2}`.replace(tableName, '?');
@ -159,91 +157,91 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as login/gim, /^\s*hear (\w+) as\s*login/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"login"})`; return `${$1} = await dk.getHear({pid: pid, kind:"login"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as email/gim, /^\s*hear (\w+) as\s*email/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"email"})`; return `${$1} = await dk.getHear({pid: pid, kind:"email"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as integer/gim, /^\s*hear (\w+) as\s*integer/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"integer"})`; return `${$1} = await dk.getHear({pid: pid, kind:"integer"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as file/gim, /^\s*hear (\w+) as\s*file/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"file"})`; return `${$1} = await dk.getHear({pid: pid, kind:"file"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as boolean/gim, /^\s*hear (\w+) as\s*boolean/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"boolean"})`; return `${$1} = await dk.getHear({pid: pid, kind:"boolean"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as name/gim, /^\s*hear (\w+) as\s*name/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"name"})`; return `${$1} = await dk.getHear({pid: pid, kind:"name"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as date/gim, /^\s*hear (\w+) as\s*date/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"date"})`; return `${$1} = await dk.getHear({pid: pid, kind:"date"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as hour/gim, /^\s*hear (\w+) as\s*hour/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"hour"})`; return `${$1} = await dk.getHear({pid: pid, kind:"hour"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as phone/gim, /^\s*hear (\w+) as\s*phone/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"phone"})`; return `${$1} = await dk.getHear({pid: pid, kind:"phone"})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as money/gim, /^\s*hear (\w+) as\s*money/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"money")}`; return `${$1} = await dk.getHear({pid: pid, kind:"money")}`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as language/gim, /^\s*hear (\w+) as\s*language/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"language")}`; return `${$1} = await dk.getHear({pid: pid, kind:"language")}`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as zipcode/gim, /^\s*hear (\w+) as\s*zipcode/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getHear({pid: pid, kind:"zipcode")}`; return `${$1} = await dk.getHear({pid: pid, kind:"zipcode")}`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*hear (\w+) as (.*)/gim, /^\s*hear (\w+) as\s*(.*)/gim,
($0, $1, $2) => { ($0, $1, $2) => {
return `${$1} = await dk.getHear({pid: pid, kind:"menu", args: [${$2}]})`; return `${$1} = await dk.getHear({pid: pid, kind:"menu", args: [${$2}]})`;
} }
@ -257,14 +255,14 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*find contact\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*find contact\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await dk.fndContact({pid: pid, ${$2}})`; return `${$1} = await dk.fndContact({pid: pid, ${$2}})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*=\s*find\s*(.*)\s*or talk\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*find\s*(.*)\s*or talk\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await sys.find({pid: pid, args:[${$2}])\n return `${$1} = await sys.find({pid: pid, args:[${$2}])\n
if (!${$1}) { if (!${$1}) {
@ -283,7 +281,7 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*find\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*find\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return ` return `
${$1} = await sys.find({pid: pid, args: [${$2}]})`; ${$1} = await sys.find({pid: pid, args: [${$2}]})`;
@ -291,7 +289,7 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*create deal(\s*)(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*create deal(\s*)(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
const params = this.getParams($3, ['dealName', 'contact', 'company', 'amount']); const params = this.getParams($3, ['dealName', 'contact', 'company', 'amount']);
@ -300,21 +298,21 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*active tasks/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*active tasks/gim,
($0, $1) => { ($0, $1) => {
return `${$1} = await dk.getActiveTasks({pid: pid})`; return `${$1} = await dk.getActiveTasks({pid: pid})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*append\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*append\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await sys.append({pid: pid, args:[${$2}]})`; return `${$1} = await sys.append({pid: pid, args:[${$2}]})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*sort\s*(\w+)\s*by(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*sort\s*(\w+)\s*by(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await sys.sortBy({pid: pid, array: ${$2}, memberName: "${$3}"})`; return `${$1} = await sys.sortBy({pid: pid, array: ${$2}, memberName: "${$3}"})`;
} }
@ -349,7 +347,7 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*get\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*get\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
const count = ($2.match(/\,/g) || []).length; const count = ($2.match(/\,/g) || []).length;
const values = $2.split(','); const values = $2.split(',');
@ -488,28 +486,28 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*post\s*(.*),\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*post\s*(.*),\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await sys.postByHttp ({pid: pid, url:${$2}, data:${$3}, headers})`; return `${$1} = await sys.postByHttp ({pid: pid, url:${$2}, data:${$3}, headers})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*put\s*(.*),\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*put\s*(.*),\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await sys.putByHttp ({pid: pid, url:${$2}, data:${$3}, headers})`; return `${$1} = await sys.putByHttp ({pid: pid, url:${$2}, data:${$3}, headers})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*download\s*(.*),\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*download\s*(.*),\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await sys.download ({pid: pid, handle:page, selector: ${$2}, folder:${$3}})`; return `${$1} = await sys.download ({pid: pid, handle:page, selector: ${$2}, folder:${$3}})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*CREATE FOLDER\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*CREATE FOLDER\s*(.*)/gim,
($0, $1, $2) => { ($0, $1, $2) => {
return `${$1} = await sys.createFolder ({pid: pid, name:${$2}})`; return `${$1} = await sys.createFolder ({pid: pid, name:${$2}})`;
} }
@ -665,7 +663,7 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*chart(\s*)(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*chart(\s*)(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
const params = this.getParams($3, ['type', 'data', 'legends', 'transpose']); const params = this.getParams($3, ['type', 'data', 'legends', 'transpose']);
return `${$1} = await dk.chart ({pid: pid, ${params}})`; return `${$1} = await dk.chart ({pid: pid, ${params}})`;
@ -701,21 +699,21 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*(.*)\s*as image/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*(.*)\s*as\s*image/gim,
($0, $1, $2) => { ($0, $1, $2) => {
return `${$1} = await sys.asImage({pid: pid, data: ${$2}})`; return `${$1} = await sys.asImage({pid: pid, data: ${$2}})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*(.*)\s*as pdf/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*(.*)\s*as\s*pdf/gim,
($0, $1, $2) => { ($0, $1, $2) => {
return `${$1} = await sys.asPdf({pid: pid, data: ${$2})`; return `${$1} = await sys.asPdf({pid: pid, data: ${$2})`;
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*FILL\s*(.*)\s*WITH\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*FILL\s*(.*)\s*WITH\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return `${$1} = await sys.fill({pid: pid, templateName: ${$2}, data: ${$3}})`; return `${$1} = await sys.fill({pid: pid, templateName: ${$2}, data: ${$3}})`;
} }
@ -742,7 +740,7 @@ export class KeywordsExpressions {
} }
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*BLUR\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*BLUR\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return ` return `
${$1} = await img.blur({pid: pid, args: [${$2}]})`; ${$1} = await img.blur({pid: pid, args: [${$2}]})`;
@ -750,7 +748,7 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*SHARPEN\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*SHARPEN\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
return ` return `
${$1} = await img.sharpen({pid: pid, args: [${$2}]})`; ${$1} = await img.sharpen({pid: pid, args: [${$2}]})`;
@ -758,7 +756,7 @@ export class KeywordsExpressions {
]; ];
keywords[i++] = [ keywords[i++] = [
/^\s*(\w+)\s*\=\s*CARD\s*(.*)/gim, /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*CARD\s*(.*)/gim,
($0, $1, $2, $3) => { ($0, $1, $2, $3) => {
const params = this.getParams($1, ['doc', 'data']); const params = this.getParams($1, ['doc', 'data']);
return ` return `