New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@balena/odata-to-abstract-sql

Package Overview
Dependencies
Maintainers
4
Versions
235
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@balena/odata-to-abstract-sql - npm Package Compare versions

Comparing version 5.3.2 to 5.4.0-official-table-definitions-54aeac9955a23bba0df8df203dcb4ab8889f5612

40

CHANGELOG.md

@@ -7,2 +7,42 @@ # Change Log

## 5.4.0 - 2020-12-18
<details>
<summary> Add support for official abstract-sql table definitions [Pagan Gazzard] </summary>
> ### abstract-sql-compiler-7.4.0 - 2020-12-18
>
> * Add support for table definitions [Pagan Gazzard]
>
> ### abstract-sql-compiler-7.3.0 - 2020-12-18
>
> * Allow compiling `*QueryNode`s to direct strings without binds [Pagan Gazzard]
>
> ### abstract-sql-compiler-7.2.1 - 2020-12-18
>
> * Improve typings for compilation results [Pagan Gazzard]
>
> ### abstract-sql-compiler-7.2.0 - 2020-12-16
>
> * Add an `optimizeSchema` function [Pagan Gazzard]
>
> ### abstract-sql-compiler-7.1.0 - 2020-12-09
>
> * Add check constraint support at the table level [Pagan Gazzard]
>
> ### abstract-sql-compiler-7.0.7 - 2020-12-09
>
> * Convert tests from coffeescript to type-checked javascript [Pagan Gazzard]
>
> ### abstract-sql-compiler-7.0.6 - 2020-11-30
>
> * Fix the `NOT(NOT(...))` optimization [Pagan Gazzard]
>
> ### abstract-sql-compiler-7.0.5 - 2020-11-30
>
> * Remove some type casts [Pagan Gazzard]
>
</details>
## 5.3.2 - 2020-12-18

@@ -9,0 +49,0 @@

20

out/odata-to-abstract-sql.d.ts
import * as _ from 'lodash';
import * as memoize from 'memoizee';
import type { AbstractSqlQuery, AbstractSqlModel, AbstractSqlTable, DurationNode, AbstractSqlType, SelectNode, FromNode, WhereNode, OrderByNode, LimitNode, OffsetNode, NumberTypeNodes, FieldsNode, ValuesNode, ReferencedFieldNode, BooleanTypeNodes, UnionQueryNode, SelectQueryNode, BindNode, TableNode } from '@balena/abstract-sql-compiler';
import type { AbstractSqlQuery, AbstractSqlModel, AbstractSqlTable, DurationNode, AbstractSqlType, SelectNode, FromNode, WhereNode, OrderByNode, LimitNode, OffsetNode, NumberTypeNodes, FieldsNode, ValuesNode, ReferencedFieldNode, BooleanTypeNodes, SelectQueryNode, BindNode, TableNode, Definition as ModernDefinition, ResourceNode, UnionQueryNode } from '@balena/abstract-sql-compiler';
import type { ODataBinds, ODataQuery, SupportedMethod, ExpandPropertyPath, ResourceOptions, OrderByOption, OrderByPropertyPath, FilterOption, BindReference } from '@balena/odata-parser';
export type { ODataBinds, ODataQuery, SupportedMethod };
export declare type ResourceNode = ['Resource', string];
declare module '@balena/abstract-sql-compiler' {
interface AbstractSqlTable {
definition?: Definition;
}
interface FromTypeNode {
ResourceNode: ResourceNode;
}
}
export interface Definition {
interface LegacyDefinition {
extraBinds: ODataBinds;
abstractSqlQuery: SelectQueryNode | UnionQueryNode | ResourceNode | TableNode;
}
interface Resource extends AbstractSqlTable {
export declare type Definition = ModernDefinition | LegacyDefinition;
interface Resource extends Omit<AbstractSqlTable, 'definition'> {
tableAlias?: string;

@@ -44,3 +36,3 @@ definition?: Definition;

export declare const odataNameToSqlName: ((odataName: string) => string) & memoize.Memoized<(odataName: string) => string>;
export declare const rewriteBinds: (definition: NonNullable<Resource['definition']>, existingBinds: ODataBinds, inc?: number) => void;
export declare const rewriteBinds: (definition: ModernDefinition, existingBinds: ODataBinds, inc?: number) => void;
export declare const isBindReference: (maybeBind: {

@@ -119,3 +111,3 @@ [key: string]: unknown;

Synonym(sqlName: string): string;
rewriteDefinition(definition: Definition, extraBindVars: ODataBinds, bindVarsLength: number): Definition;
rewriteDefinition(definition: Definition, extraBindVars: ODataBinds, bindVarsLength: number): ModernDefinition;
}

@@ -7,2 +7,11 @@ "use strict";

const randomstring = require("randomstring");
const convertToModernDefinition = (definition) => {
if ('abstractSql' in definition) {
return definition;
}
return {
binds: definition.extraBinds,
abstractSql: definition.abstractSqlQuery,
};
};
const comparison = {

@@ -58,7 +67,3 @@ eq: 'IsNotDistinctFrom',

const definition = odataToAbstractSql.rewriteDefinition(resource.definition, args.extraBindVars, args.bindVarsLength);
this.from.push([
'Alias',
definition.abstractSqlQuery,
resource.tableAlias,
]);
this.from.push(['Alias', definition.abstractSql, resource.tableAlias]);
}

@@ -105,8 +110,8 @@ else if (resource.name !== resource.tableAlias) {

const rewriteBinds = (definition, existingBinds, inc = 0) => {
const { extraBinds } = definition;
if (extraBinds.length === 0) {
const { binds } = definition;
if (binds == null || binds.length === 0) {
return;
}
inc += existingBinds.length;
modifyAbstractSql('Bind', definition.abstractSqlQuery, (bind) => {
modifyAbstractSql('Bind', definition.abstractSql, (bind) => {
if (typeof bind[1] === 'number') {

@@ -116,3 +121,3 @@ bind[1] += inc;

});
existingBinds.push(...extraBinds);
existingBinds.push(...binds);
};

@@ -336,18 +341,20 @@ exports.rewriteBinds = rewriteBinds;

unionResource.definition = {
extraBinds: [],
abstractSqlQuery: bindVarSelectQuery,
binds: [],
abstractSql: bindVarSelectQuery,
};
}
else {
unionResource.definition = { ...unionResource.definition };
if (unionResource.definition.abstractSqlQuery[0] !== 'SelectQuery') {
unionResource.definition = {
...convertToModernDefinition(unionResource.definition),
};
if (unionResource.definition.abstractSql[0] !== 'SelectQuery') {
throw new Error('Only select query definitions supported for inserts');
}
const isTable = (part) => part[0] === 'Table' && part[1] === unionResource.name;
if (isTable(unionResource.definition.abstractSqlQuery)) {
unionResource.definition.abstractSqlQuery = bindVarSelectQuery;
if (isTable(unionResource.definition.abstractSql)) {
unionResource.definition.abstractSql = bindVarSelectQuery;
}
else {
let found = false;
unionResource.definition.abstractSqlQuery = unionResource.definition.abstractSqlQuery.map((part) => {
unionResource.definition.abstractSql = unionResource.definition.abstractSql.map((part) => {
if (part[0] === 'From') {

@@ -1143,5 +1150,5 @@ if (isTable(part[1])) {

rewriteDefinition(definition, extraBindVars, bindVarsLength) {
const rewrittenDefinition = _.cloneDeep(definition);
const rewrittenDefinition = _.cloneDeep(convertToModernDefinition(definition));
exports.rewriteBinds(rewrittenDefinition, extraBindVars, bindVarsLength);
modifyAbstractSql('Resource', rewrittenDefinition.abstractSqlQuery, (resource) => {
modifyAbstractSql('Resource', rewrittenDefinition.abstractSql, (resource) => {
const resourceName = resource[1];

@@ -1154,3 +1161,3 @@ const referencedResource = this.clientModel.tables[resourceName];

const subDefinition = this.rewriteDefinition(referencedResource.definition, extraBindVars, bindVarsLength);
resource.splice(0, resource.length, ...subDefinition.abstractSqlQuery);
resource.splice(0, resource.length, ...subDefinition.abstractSql);
}

@@ -1157,0 +1164,0 @@ else if (referencedResource.fields.some((field) => field.computed != null)) {

{
"name": "@balena/odata-to-abstract-sql",
"version": "5.3.2",
"version": "5.4.0-official-table-definitions-54aeac9955a23bba0df8df203dcb4ab8889f5612",
"description": "A consumer of the OData parser, written in OMeta",

@@ -20,3 +20,3 @@ "main": "out/odata-to-abstract-sql.js",

"dependencies": {
"@balena/abstract-sql-compiler": "^7.0.4",
"@balena/abstract-sql-compiler": "^7.4.0",
"@balena/odata-parser": "^2.2.1",

@@ -34,11 +34,11 @@ "@types/lodash": "^4.14.165",

"@balena/sbvr-parser": "^1.1.1",
"@balena/sbvr-types": "^3.1.2",
"@balena/sbvr-types": "^3.1.3",
"chai": "^4.2.0",
"chai-things": "~0.2.0",
"coffeescript": "^1.12.7",
"husky": "^4.3.0",
"lint-staged": "^10.5.2",
"husky": "^4.3.6",
"lint-staged": "^10.5.3",
"mocha": "^8.2.1",
"require-npm4-to-publish": "^1.0.0",
"typescript": "^4.1.2"
"typescript": "^4.1.3"
},

@@ -45,0 +45,0 @@ "husky": {

@@ -23,3 +23,2 @@ import * as _ from 'lodash';

BooleanTypeNodes,
UnionQueryNode,
SelectQueryNode,

@@ -31,2 +30,5 @@ InNode,

TableNode,
Definition as ModernDefinition,
ResourceNode,
UnionQueryNode,
} from '@balena/abstract-sql-compiler';

@@ -46,19 +48,20 @@ import type {

export type ResourceNode = ['Resource', string];
declare module '@balena/abstract-sql-compiler' {
interface AbstractSqlTable {
definition?: Definition;
}
interface FromTypeNode {
ResourceNode: ResourceNode;
}
}
export interface Definition {
interface LegacyDefinition {
extraBinds: ODataBinds;
abstractSqlQuery: SelectQueryNode | UnionQueryNode | ResourceNode | TableNode;
}
export type Definition = ModernDefinition | LegacyDefinition;
const convertToModernDefinition = (
definition: Definition,
): ModernDefinition => {
if ('abstractSql' in definition) {
return definition;
}
return {
binds: definition.extraBinds,
abstractSql: definition.abstractSqlQuery,
};
};
interface Resource extends AbstractSqlTable {
interface Resource extends Omit<AbstractSqlTable, 'definition'> {
tableAlias?: string;

@@ -150,7 +153,3 @@ definition?: Definition;

);
this.from.push([
'Alias',
definition.abstractSqlQuery,
resource.tableAlias,
]);
this.from.push(['Alias', definition.abstractSql, resource.tableAlias]);
} else if (resource.name !== resource.tableAlias) {

@@ -209,8 +208,8 @@ this.from.push(['Alias', ['Table', resource.name], resource.tableAlias]);

export const rewriteBinds = (
definition: NonNullable<Resource['definition']>,
definition: ModernDefinition,
existingBinds: ODataBinds,
inc: number = 0,
): void => {
const { extraBinds } = definition;
if (extraBinds.length === 0) {
const { binds } = definition;
if (binds == null || binds.length === 0) {
return;

@@ -221,3 +220,3 @@ }

'Bind',
definition.abstractSqlQuery as AbstractSqlQuery,
definition.abstractSql as AbstractSqlQuery,
(bind: BindNode) => {

@@ -229,3 +228,3 @@ if (typeof bind[1] === 'number') {

);
existingBinds.push(...extraBinds);
existingBinds.push(...binds);
};

@@ -509,8 +508,10 @@

unionResource.definition = {
extraBinds: [],
abstractSqlQuery: bindVarSelectQuery,
binds: [],
abstractSql: bindVarSelectQuery,
};
} else {
unionResource.definition = { ...unionResource.definition };
if (unionResource.definition.abstractSqlQuery[0] !== 'SelectQuery') {
unionResource.definition = {
...convertToModernDefinition(unionResource.definition),
};
if (unionResource.definition.abstractSql[0] !== 'SelectQuery') {
throw new Error(

@@ -524,7 +525,7 @@ 'Only select query definitions supported for inserts',

if (isTable(unionResource.definition.abstractSqlQuery)) {
unionResource.definition.abstractSqlQuery = bindVarSelectQuery;
if (isTable(unionResource.definition.abstractSql)) {
unionResource.definition.abstractSql = bindVarSelectQuery;
} else {
let found = false;
unionResource.definition.abstractSqlQuery = unionResource.definition.abstractSqlQuery.map(
unionResource.definition.abstractSql = unionResource.definition.abstractSql.map(
(part) => {

@@ -1467,8 +1468,10 @@ if (part[0] === 'From') {

bindVarsLength: number,
): Definition {
const rewrittenDefinition = _.cloneDeep(definition);
): ModernDefinition {
const rewrittenDefinition = _.cloneDeep(
convertToModernDefinition(definition),
);
rewriteBinds(rewrittenDefinition, extraBindVars, bindVarsLength);
modifyAbstractSql(
'Resource',
rewrittenDefinition.abstractSqlQuery as AbstractSqlQuery,
rewrittenDefinition.abstractSql as AbstractSqlQuery,
(resource: ResourceNode) => {

@@ -1489,3 +1492,3 @@ const resourceName = resource[1];

resource.length,
...(subDefinition.abstractSqlQuery as AbstractSqlType[]),
...(subDefinition.abstractSql as AbstractSqlType[]),
);

@@ -1492,0 +1495,0 @@ } else if (

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc