JS: Initial models-as-data implementation #7171
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.


Initial implementation of models-as-data. Please use the backlinked issue for high-level discussion of the format itself.
The implementation is split in three files:
Shared.qllis intended to be shared between languages (some day; currently only works for JS)Impl.qllis intended to contain the langauge-specific details.ModelsAsData.qllis the public interface from the rest of the librarySome predicates from
Shared.qllmust be usable fromImpl.qll, but should not be public in the library, soModelsAsData.qllacts as a gatekeeper toward the public API.The API exposes two modules:
ModelInputis used for contributing modelsModelInput::SinkModelCsvto add new sinksModelOutputis used for accessing interpreted models in terms of API nodesModelOutput::getASinkNode("sql-injection")to get SQL injection sinksIn this PR I have ported Sequelize and Spanner, as initial validation.
Evaluation from a slightly earlier version.
getSourceType()returned a different string for those source, not because they were truly new)The text was updated successfully, but these errors were encountered: