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

api-core

Package Overview
Dependencies
Maintainers
1
Versions
225
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

api-core - npm Package Compare versions

Comparing version 0.0.8-alpha.1 to 0.0.8-alpha.2

1

dist/src/query/ApiQueryBuilder.d.ts

@@ -11,4 +11,5 @@ import { ApiQuery } from "./ApiQuery";

private buildReadQuery;
private buildChangeQuery;
private buildCreateQuery;
build: (request: ApiRequest) => ApiQuery;
}

@@ -175,3 +175,47 @@ "use strict";

query.unshift(new QueryEdgeQueryStep(baseQuery));
if (request.body)
query.unshift(new ExtendContextQueryStep(request.context));
if (lastSegment instanceof ApiRequest_1.EntryPathSegment) {
query.unshift(new ExtendContextQueryStep(new ApiEdgeQueryContext_1.ApiEdgeQueryContext(lastSegment.id)));
}
else if (lastSegment instanceof ApiRequest_1.RelatedFieldPathSegment) {
query.unshift(new ProvideIdQueryStep(lastSegment.relation.relationId));
}
else {
}
var readMode = true;
for (var i = segments.length - 2; i >= 0; i--) {
var currentSegment = segments[i];
var relation = segments[i + 1].relation;
if (relation && !(relation instanceof OneToOneRelation_1.OneToOneRelation)) {
query.unshift(new RelateQueryStep(relation));
}
if (readMode) {
readMode = _this.buildReadStep(query, currentSegment);
}
else {
readMode = _this.buildCheckStep(query, currentSegment);
}
}
return query;
};
this.buildChangeQuery = function (request) {
var query = new ApiQuery_1.ApiQuery();
var segments = request.path.segments, lastSegment = segments[segments.length - 1];
var baseQuery;
if (lastSegment instanceof ApiRequest_1.EdgePathSegment) {
if (request.type === ApiRequest_1.ApiRequestType.Update) {
baseQuery = new ApiEdgeQuery_1.ApiEdgeQuery(lastSegment.edge, ApiEdgeQueryType_1.ApiEdgeQueryType.Update);
}
else {
baseQuery = new ApiEdgeQuery_1.ApiEdgeQuery(lastSegment.edge, ApiEdgeQueryType_1.ApiEdgeQueryType.Delete);
}
}
else if (lastSegment instanceof ApiRequest_1.RelatedFieldPathSegment) {
baseQuery = new ApiEdgeQuery_1.ApiEdgeQuery(lastSegment.relation.to, ApiEdgeQueryType_1.ApiEdgeQueryType.Get);
}
else {
baseQuery = new ApiEdgeQuery_1.ApiEdgeQuery(lastSegment.edge, ApiEdgeQueryType_1.ApiEdgeQueryType.Get);
}
query.unshift(new QueryEdgeQueryStep(baseQuery));
if (request.type === ApiRequest_1.ApiRequestType.Update)
query.unshift(new SetBodyQueryStep(request.body));

@@ -216,5 +260,6 @@ query.unshift(new ExtendContextQueryStep(request.context));

case ApiRequest_1.ApiRequestType.Read:
return _this.buildReadQuery(request);
case ApiRequest_1.ApiRequestType.Update:
case ApiRequest_1.ApiRequestType.Delete:
return _this.buildReadQuery(request);
return _this.buildChangeQuery(request);
case ApiRequest_1.ApiRequestType.Create:

@@ -221,0 +266,0 @@ return _this.buildCreateQuery(request);

2

package.json
{
"name": "api-core",
"version": "0.0.8-alpha.1",
"version": "0.0.8-alpha.2",
"description": "Core classes for building dynamic model based multi-level APIs for any provider.",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -261,3 +261,2 @@ import {QueryStep, QueryScope, ApiQuery} from "./ApiQuery";

//STEP 2: Provide context for the base query.
if(request.body) query.unshift(new SetBodyQueryStep(request.body));
query.unshift(new ExtendContextQueryStep(request.context));

@@ -300,2 +299,66 @@

private buildChangeQuery = (request: ApiRequest): ApiQuery => {
let query = new ApiQuery();
let segments = request.path.segments,
lastSegment = segments[segments.length-1];
//STEP 1: Create the base query which will provide the final data.
let baseQuery: ApiEdgeQuery;
if(lastSegment instanceof EdgePathSegment) {
if(request.type === ApiRequestType.Update) {
baseQuery = new ApiEdgeQuery(lastSegment.edge, ApiEdgeQueryType.Update);
}
else {
baseQuery = new ApiEdgeQuery(lastSegment.edge, ApiEdgeQueryType.Delete);
}
}
else if(lastSegment instanceof RelatedFieldPathSegment) {
baseQuery = new ApiEdgeQuery(lastSegment.relation.to, ApiEdgeQueryType.Get);
}
//TODO: Add support for method calls
else {
baseQuery = new ApiEdgeQuery(lastSegment.edge, ApiEdgeQueryType.Get);
}
query.unshift(new QueryEdgeQueryStep(baseQuery));
//STEP 2: Provide context for the base query.
if(request.type === ApiRequestType.Update) query.unshift(new SetBodyQueryStep(request.body));
query.unshift(new ExtendContextQueryStep(request.context));
//STEP 3: Provide ID for the base query.
if(lastSegment instanceof EntryPathSegment) {
query.unshift(new ExtendContextQueryStep(new ApiEdgeQueryContext(lastSegment.id)))
}
else if(lastSegment instanceof RelatedFieldPathSegment) {
query.unshift(new ProvideIdQueryStep(lastSegment.relation.relationId))
}
else {
//TODO: Add support for method calls
}
//STEP 4: Provide filters and validation for the base query.
let readMode = true;
for(let i = segments.length-2; i >= 0; i--) {
let currentSegment = segments[i];
//STEP 1: Relate to the current query.
let relation = segments[i+1].relation;
if(relation && !(relation instanceof OneToOneRelation)) {
query.unshift(new RelateQueryStep(relation));
}
//STEP 2: Read or Check
if(readMode) {
readMode = this.buildReadStep(query, currentSegment)
}
else {
readMode = this.buildCheckStep(query, currentSegment)
}
}
//STEP 5: Return the completed query.
return query
};
private buildCreateQuery = (request: ApiRequest): ApiQuery => {

@@ -326,5 +389,6 @@ let query = new ApiQuery();

case ApiRequestType.Read:
return this.buildReadQuery(request);
case ApiRequestType.Update:
case ApiRequestType.Delete:
return this.buildReadQuery(request);
return this.buildChangeQuery(request);
case ApiRequestType.Create:

@@ -331,0 +395,0 @@ return this.buildCreateQuery(request);

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