diff --git a/packages/string-templates/src/processors/postprocessor.js b/packages/string-templates/src/processors/postprocessor.js index adc8362abe..4d1c84013a 100644 --- a/packages/string-templates/src/processors/postprocessor.js +++ b/packages/string-templates/src/processors/postprocessor.js @@ -18,7 +18,7 @@ class Postprocessor { module.exports.processors = [ new Postprocessor(PostProcessorNames.CONVERT_LITERALS, statement => { - if (!statement.includes(LITERAL_MARKER)) { + if (typeof statement !== "string" || !statement.includes(LITERAL_MARKER)) { return statement } const splitMarkerIndex = statement.indexOf("-") diff --git a/packages/string-templates/test/examples/table.json b/packages/string-templates/test/examples/table.json new file mode 100644 index 0000000000..4d982e012b --- /dev/null +++ b/packages/string-templates/test/examples/table.json @@ -0,0 +1,305 @@ +{ + "user":{ + "_id":"ro_ta_users_us_b0bc7ba0ce304294accc1ced8165dd23", + "_rev":"1-e9199d92e7286005a9c11c614fdbcc51", + "email":"test2@test.com", + "status":"active", + "roleId":"PUBLIC", + "test-Created By_text":"", + "test-Updated By_text":"" + }, + "closestComponentId":"c670254c9e74e40518ee5becff53aa5be", + "url":{ + + }, + "c670254c9e74e40518ee5becff53aa5be":{ + "rows":[ + { + "_id":"ro_ta_1399af8a08d244a9885c674dd5555c84_8c1940e906254db5ac79c51011255d6c", + "_rev":"1-49ff5a4094a251a7767155eb85f4c9b7", + "sef":"sefesfesf", + "Name":"sefesf", + "tableId":"ta_1399af8a08d244a9885c674dd5555c84", + "Auto ID":1, + "Created At":"2021-05-27T10:30:37.386Z", + "Updated At":"2021-05-27T10:30:37.386Z", + "type":"row", + "Created By":[ + { + "_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763" + } + ], + "Updated By":[ + { + "_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763" + } + ], + "testing":"2", + "Created By_text":"", + "Updated By_text":"" + } + ], + "schema":{ + "Auto ID":{ + "name":"Auto ID", + "type":"number", + "subtype":"autoID", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"number", + "presence":false, + "numericality":{ + "greaterThanOrEqualTo":"", + "lessThanOrEqualTo":"" + } + }, + "lastID":1 + }, + "Created By":{ + "name":"Created By", + "type":"link", + "subtype":"createdBy", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"array", + "presence":false + }, + "tableId":"ta_users", + "fieldName":"test-Created By", + "relationshipType":"many-to-many" + }, + "Created At":{ + "name":"Created At", + "type":"datetime", + "subtype":"createdAt", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"string", + "length":{ + + }, + "presence":false, + "datetime":{ + "latest":"", + "earliest":"" + } + } + }, + "Updated By":{ + "name":"Updated By", + "type":"link", + "subtype":"updatedBy", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"array", + "presence":false + }, + "tableId":"ta_users", + "fieldName":"test-Updated By", + "relationshipType":"many-to-many" + }, + "Updated At":{ + "name":"Updated At", + "type":"datetime", + "subtype":"updatedAt", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"string", + "length":{ + + }, + "presence":false, + "datetime":{ + "latest":"", + "earliest":"" + } + } + }, + "Name":{ + "type":"string", + "constraints":{ + "type":"string", + "length":{ + "maximum":null + }, + "presence":false + }, + "fieldName":"test", + "name":"Name" + }, + "sef":{ + "type":"string", + "constraints":{ + "type":"string", + "length":{ + "maximum":null + }, + "presence":false + }, + "fieldName":"test", + "name":"sef" + }, + "testing":{ + "type":"formula", + "constraints":{ + "type":"string", + "presence":false + }, + "fieldName":"test", + "name":"testing", + "formula":"{{ add [Auto ID] 1 }}" + } + }, + "rowsLength":1 + }, + "data":{ + "rows":[ + { + "_id":"ro_ta_1399af8a08d244a9885c674dd5555c84_8c1940e906254db5ac79c51011255d6c", + "_rev":"1-49ff5a4094a251a7767155eb85f4c9b7", + "sef":"sefesfesf", + "Name":"sefesf", + "tableId":"ta_1399af8a08d244a9885c674dd5555c84", + "Auto ID":1, + "Created At":"2021-05-27T10:30:37.386Z", + "Updated At":"2021-05-27T10:30:37.386Z", + "type":"row", + "Created By":[ + { + "_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763" + } + ], + "Updated By":[ + { + "_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763" + } + ], + "testing":"2", + "Created By_text":"", + "Updated By_text":"" + } + ], + "schema":{ + "Auto ID":{ + "name":"Auto ID", + "type":"number", + "subtype":"autoID", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"number", + "presence":false, + "numericality":{ + "greaterThanOrEqualTo":"", + "lessThanOrEqualTo":"" + } + }, + "lastID":1 + }, + "Created By":{ + "name":"Created By", + "type":"link", + "subtype":"createdBy", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"array", + "presence":false + }, + "tableId":"ta_users", + "fieldName":"test-Created By", + "relationshipType":"many-to-many" + }, + "Created At":{ + "name":"Created At", + "type":"datetime", + "subtype":"createdAt", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"string", + "length":{ + + }, + "presence":false, + "datetime":{ + "latest":"", + "earliest":"" + } + } + }, + "Updated By":{ + "name":"Updated By", + "type":"link", + "subtype":"updatedBy", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"array", + "presence":false + }, + "tableId":"ta_users", + "fieldName":"test-Updated By", + "relationshipType":"many-to-many" + }, + "Updated At":{ + "name":"Updated At", + "type":"datetime", + "subtype":"updatedAt", + "icon":"ri-magic-line", + "autocolumn":true, + "constraints":{ + "type":"string", + "length":{ + + }, + "presence":false, + "datetime":{ + "latest":"", + "earliest":"" + } + } + }, + "Name":{ + "type":"string", + "constraints":{ + "type":"string", + "length":{ + "maximum":null + }, + "presence":false + }, + "fieldName":"test", + "name":"Name" + }, + "sef":{ + "type":"string", + "constraints":{ + "type":"string", + "length":{ + "maximum":null + }, + "presence":false + }, + "fieldName":"test", + "name":"sef" + }, + "testing":{ + "type":"formula", + "constraints":{ + "type":"string", + "presence":false + }, + "fieldName":"test", + "name":"testing", + "formula":"{{ add [Auto ID] 1 }}" + } + }, + "rowsLength":1 + } +} \ No newline at end of file diff --git a/packages/string-templates/test/helpers.spec.js b/packages/string-templates/test/helpers.spec.js index 0d14133aad..0217395537 100644 --- a/packages/string-templates/test/helpers.spec.js +++ b/packages/string-templates/test/helpers.spec.js @@ -1,4 +1,5 @@ const { processString, processObject, isValid } = require("../src/index.cjs") +const tableJson = require("./examples/table.json") describe("test the custom helpers we have applied", () => { it("should be able to use the object helper", async () => { @@ -388,4 +389,17 @@ describe("Cover a few complex use cases", () => { const output = await processObject(input, context) expect(output.text).toBe("12-01") }) + + it("should only invalidate a single string in an object", async () => { + const input = { + dataProvider:"{{ literal [c670254c9e74e40518ee5becff53aa5be] }}", + theme:"spectrum--lightest", + showAutoColumns:false, + quiet:true, + size:"spectrum--medium", + rowCount:8, + } + const output = await processObject(input, tableJson) + expect(output.dataProvider).not.toBe("Invalid Binding") + }) })