Suppose we have the following list:

createInstance = {import:create-instance-plugin}

person
  name = [this.nameList]
  nameList
    Salman
    Manny
    Rhian
  age = {31-49}
  child = [this.child_obj]
  child_obj
    name = [this.nameList]
    nameList
      Anne
      Arram
      Amelia
    age = {3-17}

If we output:

[p = createInstance(person, "deep"), p.name] [p.age] [p.name] [p.age]

We can see that it has fixed the name and the age property on the instance. However, if we output:

[p = createInstance(person, "deep"), p.child.name] [p.child.age] [p.child.name] [p.child.age]

It would throw undefined. Now looking at similar list:

person
  name = {Salman|Manny|Rhian}
  age = {31-49}
  child = [this.child_obj]
  child_obj
    name = {Anne|Arram|Amelia}
    age = {3-17}

output
  [p = createInstance(person, "deep"), p.child.name] [p.child.age] [p.child.name] [p.child.age]

This would have the values fixed and working.

Looking at the code of the create-instance-plugin, it would only allow the ‘deep’ fixing of properties if there isn’t any items/lists in it. What that means is the following:

child_obj
  name = [this.nameList]
  nameList
    Anne
    Arram
    Amelia
  age = {3-17}

This object/list, has a list ( nameList) within it as well as properties (name and age), while:

child_obj
  name = {Anne|Arram|Amelia}
  age = {3-17}

Only has properties. and based on Line 22 of the create-instance-plugin:

...
} else if(propValue.getPropertyKeys && propValue.getPropertyKeys.length > 0 && propValue.getLength === 0) {
...

If the list to be fixed has a list within it other than the properties i.e. propValue.getLength is not zero, then it wouldn’t fix the properties within it.

The first child_obj has a nameList with it, and upon calling propValue.getLength it would have 1 while the second child_obj will return a propValue.getLength of 0 since it doesn’t have any lists.

Thus, the solution for the problem is just removing the propValue.getLength === 0 check OR create another check without it.


TLDR; propValue.getLength === 0 at Line 22 of the create-instance-plugin can be removed to allow properties that rely on same level lists to be fixed. Here is the demo of the problem with a ‘remixed’ create instance plugin with the fix.