public define()

in src/jsii2schema.ts [58:86]


  public define(fqn: string, schema: () => any) {
    const originalFqn = fqn;
    fqn = fqn.replace('/', '.');

    if (!(fqn in this.definitions)) {
      if (this.definitionStack.includes(fqn)) {
        this.error(`cyclic definition of ${fqn}`);
        return undefined;
      }

      this.definitionStack.push(fqn);

      try {
        const s = schema();
        if (!s) {
          this.error('cannot schematize');
          return undefined;
        }

        s.comment = originalFqn;

        this.definitions[fqn] = s;
      } finally {
        this.definitionStack.pop();
      }
    }

    return { $ref: `#/definitions/${fqn}` };
  }