From b913a3fe29fab5d449839ea5b423aa31a058560b Mon Sep 17 00:00:00 2001 From: Darryl <118641404+cdsiats@users.noreply.github.com> Date: Sat, 1 Feb 2025 10:51:00 +0800 Subject: [PATCH 1/2] fixes #09 16h --- packages/idea-parser/src/definitions.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/idea-parser/src/definitions.ts b/packages/idea-parser/src/definitions.ts index a637eaf..532c47a 100644 --- a/packages/idea-parser/src/definitions.ts +++ b/packages/idea-parser/src/definitions.ts @@ -131,7 +131,7 @@ const definitions: Record = { }; }, 'Float': (code, start) => { - const match = code.slice(start).match(/^\d+\.\d+/); + const match = code.slice(start).match(/^-?\d+\.\d+/); if (match !== null && match.index === 0) { const end = start + match[0].length; const value = code.substring(start, end); @@ -147,7 +147,7 @@ const definitions: Record = { return undefined; }, 'Integer': (code, start) => { - const match = code.slice(start).match(/^[0-9]+/); + const match = code.slice(start).match(/^-?[0-9]+/); if (match !== null && match.index === 0) { const end = start + match[0].length; const value = code.substring(start, end); From 5ecda4a0d55f83cf155919f703c45ccb2c1bdfdb Mon Sep 17 00:00:00 2001 From: Darryl <118641404+cdsiats@users.noreply.github.com> Date: Sat, 1 Feb 2025 17:25:56 +0800 Subject: [PATCH 2/2] added test for parsing negative values #09 22h --- packages/idea-parser/tests/ModelTree.test.ts | 12 +- .../idea-parser/tests/fixtures/address.idea | 72 + .../idea-parser/tests/fixtures/address.json | 2241 +++++++++++++++++ 3 files changed, 2322 insertions(+), 3 deletions(-) create mode 100644 packages/idea-parser/tests/fixtures/address.idea create mode 100644 packages/idea-parser/tests/fixtures/address.json diff --git a/packages/idea-parser/tests/ModelTree.test.ts b/packages/idea-parser/tests/ModelTree.test.ts index cafed01..e441b7b 100644 --- a/packages/idea-parser/tests/ModelTree.test.ts +++ b/packages/idea-parser/tests/ModelTree.test.ts @@ -51,7 +51,13 @@ describe('Model Tree', () => { expect(() => modelTree.parse('model foobar')).to.throw('Expected CapitalIdentifier but got something else'); }); - - - + it('Should parse negative values', async () => { + const actualRaw = ModelTree.parse(fs.readFileSync(`${__dirname}/fixtures/address.idea`, 'utf8')); + const expectedRaw = JSON.parse(fs.readFileSync(`${__dirname}/fixtures/address.json`, 'utf8')); + + const actual = cleanAST(actualRaw); + const expected = cleanAST(expectedRaw); + + expect(actual).to.deep.equalInAnyOrder(expected); + }); }); diff --git a/packages/idea-parser/tests/fixtures/address.idea b/packages/idea-parser/tests/fixtures/address.idea new file mode 100644 index 0000000..de88108 --- /dev/null +++ b/packages/idea-parser/tests/fixtures/address.idea @@ -0,0 +1,72 @@ +model Address + @label("Address" "Addresses") + @template("{{label}}") + @icon("map-marker") +{ + id String @label("Places ID") @id + @list.overflow({ length 10 hellip true }) + + formatted String @label("Formatted Address") + @field.text + @is.required + @list.text @view.text + + street String @label("Street Address") + @field.text + @is.required + @list.text @view.text + + neighborhood String? @label("Neighborhood") + @field.text + @list.text @view.text + + city String @label("City") + @field.text + @is.required + @list.text @view.text + + state String? @label("State") + @field.text + @list.text @view.text + + region String? @label("Region") + @field.text + @list.text @view.text + + country String @label("Country") + @field.text + @is.required + @list.text @view.text + + postal String @label("Postal Code") + @field.text + @is.required + @list.text @view.text + + latitude Float? @label("Latitude") + @min(-90) @max(90) @step(0.00000001) + @field.number({ min -90 max 90 step 0.00000001 }) + @is.gte(-90) @is.lte(90) + @list.hide @view.number + + longitude Float? @label("Longitude") + @min(-180) @max(180) @step(0.00000001) + @field.number({ min -180 max 180 step 0.00000001 }) + @is.gte(-180) @is.lte(180) + @list.hide @view.number + + active Boolean @label("Active") + @default(true) + @filter.switch + @list.hide @view.yesno + + created Datetime @label("Created") + @default("now()") @sortable + @list.date("m d, Y h:iA") + @view.date("m d, Y h:iA") + + updated Datetime @label("Updated") + @default("now()") @timestamp @sortable + @list.date("m d, Y h:iA") + @view.date("m d, Y h:iA") +} \ No newline at end of file diff --git a/packages/idea-parser/tests/fixtures/address.json b/packages/idea-parser/tests/fixtures/address.json new file mode 100644 index 0000000..80d49c0 --- /dev/null +++ b/packages/idea-parser/tests/fixtures/address.json @@ -0,0 +1,2241 @@ +{ + "type": "VariableDeclaration", + "kind": "model", + "mutable": true, + "declarations": [ + { + "type": "VariableDeclarator", + "id": { + "type": "Identifier", + "name": "Address" + }, + "init": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Address", + "raw": "'Address'" + }, + { + "type": "Literal", + "value": "Addresses", + "raw": "'Addresses'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "template" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "{{label}}", + "raw": "'{{label}}'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "icon" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "map-marker", + "raw": "'map-marker'" + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "columns" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "id" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String", + "raw": "\"String\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Places ID", + "raw": "'Places ID'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "id" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.overflow" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "length" + }, + "value": { + "type": "Literal", + "value": 10, + "raw": "10" + } + }, + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "hellip" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "formatted" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String", + "raw": "\"String\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Formatted Address", + "raw": "'Formatted Address'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.required" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "street" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String", + "raw": "\"String\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Street Address", + "raw": "'Street Address'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.required" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "neighborhood" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String?", + "raw": "\"String?\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Neighborhood", + "raw": "'Neighborhood'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "city" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String", + "raw": "\"String\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "City", + "raw": "'City'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.required" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "state" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String?", + "raw": "\"String?\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "State", + "raw": "'State'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "region" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String?", + "raw": "\"String?\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Region", + "raw": "'Region'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "country" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String", + "raw": "\"String\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Country", + "raw": "'Country'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.required" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "postal" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "String", + "raw": "\"String\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Postal Code", + "raw": "'Postal Code'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.required" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.text" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "latitude" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "Float?", + "raw": "\"Float?\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Latitude", + "raw": "'Latitude'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "min" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": -90, + "raw": "-90" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "max" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": 90, + "raw": "90" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "step" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": 1e-8, + "raw": "0.00000001" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.number" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "min" + }, + "value": { + "type": "Literal", + "value": -90, + "raw": "-90" + } + }, + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "max" + }, + "value": { + "type": "Literal", + "value": 90, + "raw": "90" + } + }, + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "step" + }, + "value": { + "type": "Literal", + "value": 1e-8, + "raw": "0.00000001" + } + } + ] + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.gte" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": -90, + "raw": "-90" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.lte" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": 90, + "raw": "90" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.hide" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.number" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "longitude" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "Float?", + "raw": "\"Float?\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Longitude", + "raw": "'Longitude'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "min" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": -180, + "raw": "-180" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "max" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": 180, + "raw": "180" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "step" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": 1e-8, + "raw": "0.00000001" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "field.number" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "min" + }, + "value": { + "type": "Literal", + "value": -180, + "raw": "-180" + } + }, + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "max" + }, + "value": { + "type": "Literal", + "value": 180, + "raw": "180" + } + }, + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "step" + }, + "value": { + "type": "Literal", + "value": 1e-8, + "raw": "0.00000001" + } + } + ] + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.gte" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": -180, + "raw": "-180" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "is.lte" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": 180, + "raw": "180" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.hide" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.number" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "active" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "Boolean", + "raw": "\"Boolean\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Active", + "raw": "'Active'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "default" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": true, + "raw": "true" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "filter.switch" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.hide" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.yesno" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "created" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "Datetime", + "raw": "\"Datetime\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Created", + "raw": "'Created'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "default" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "now()", + "raw": "'now()'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "sortable" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.date" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "m d, Y h:iA", + "raw": "'m d, Y h:iA'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.date" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "m d, Y h:iA", + "raw": "'m d, Y h:iA'" + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "updated" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "type" + }, + "value": { + "type": "Literal", + "value": "Datetime", + "raw": "\"Datetime\"" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "attributes" + }, + "value": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "label" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "Updated", + "raw": "'Updated'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "default" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "now()", + "raw": "'now()'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "timestamp" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "sortable" + }, + "value": { + "type": "Literal", + "value": true, + "raw": "true" + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "list.date" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "m d, Y h:iA", + "raw": "'m d, Y h:iA'" + } + ] + } + }, + { + "type": "Property", + "kind": "init", + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "name": "view.date" + }, + "value": { + "type": "ArrayExpression", + "elements": [ + { + "type": "Literal", + "value": "m d, Y h:iA", + "raw": "'m d, Y h:iA'" + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] +} \ No newline at end of file