Skip to content

Instantly share code, notes, and snippets.

@agilecreativity
Created March 31, 2019 04:27
Show Gist options
  • Save agilecreativity/396487bcd56122ac319f1d30d57a9c09 to your computer and use it in GitHub Desktop.
Save agilecreativity/396487bcd56122ac319f1d30d57a9c09 to your computer and use it in GitHub Desktop.
diff --git a/.gitignore b/.gitignore
index c754e3ccc..deef6bbc3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -82,3 +82,9 @@ build_docker/
.av/config/vars/container
.av/config/vars/role
.av/config/vars/branch
+
+
+################
+# GraphQL junk #
+################
+sequoia-graphql/node_modules
\ No newline at end of file
diff --git a/sequoia-graphql/.npmrc b/sequoia-graphql/.npmrc
new file mode 100644
index 000000000..18d97865f
--- /dev/null
+++ b/sequoia-graphql/.npmrc
@@ -0,0 +1,2 @@
+registry=https://registry.npmjs.org/
+strict-ssl=false
diff --git a/sequoia-graphql/README.md b/sequoia-graphql/README.md
new file mode 100644
index 000000000..7fc2bb396
--- /dev/null
+++ b/sequoia-graphql/README.md
@@ -0,0 +1,191 @@
+## README
+
+## The ingredient for our work
+
+- [swagger-to-graphql](https://github.com/yarax/swagger-to-graphql) - make it easy to leverage swagger conversion
+- [apollograpql](https://github.com/apollographql)
+- [restify](https://github.com/restify/node-restify)
+
+
+### Basic setup
+
+```sh
+brew cask install graphiql
+npm install
+npm run start:watch
+```
+
+Try open the browser to the following:
+
+- [http://localhost:3000/graphql](http://localhost:3000/graphql)
+
+Try the following query:
+
+```
+{
+ getAudiences(showGroup:false) {
+ audienceId
+ }
+}
+```
+
+You should get something like
+
+```
+{
+ "data": {
+ "getAudiences": [
+ {
+ "audienceId": "94f67f10-7091-11e6-80cb-06010a0f1e01"
+ },
+ {
+ "audienceId": "4d1bfdb0-70f4-11e6-be1b-06010a0f1e01"
+ },
+ {
+ "audienceId": "066551c0-7129-11e6-bbd4-06010a0f1e01"
+ },
+ {
+ "audienceId": "fb5de230-6a0a-11e6-8355-06010a0f1e01"
+ },
+ {
+ "audienceId": "e1327320-3827-11e8-9f6f-02420a05361b"
+ },
+ {
+ "audienceId": "0054e4a0-71bd-11e6-a525-06010a0f1e01"
+ },
+ {
+ "audienceId": "68d5a930-4f5b-11e6-9a71-06010a0f1e01"
+ },
+ {
+ "audienceId": "7068ca00-4f5c-11e6-9a71-06010a0f1e01"
+ },
+ {
+ "audienceId": "2e82ef90-4f5b-11e6-9a71-06010a0f1e01"
+ },
+ {
+ "audienceId": "b37c0800-526a-11e6-85ca-06010a0f1e01"
+ },
+ {
+ "audienceId": "51685870-526b-11e6-85ca-06010a0f1e01"
+ },
+ {
+ "audienceId": "1c276bf0-526c-11e6-85ca-06010a0f1e01"
+ },
+ {
+ "audienceId": "bdac4220-4f5b-11e6-9a71-06010a0f1e01"
+ },
+ {
+ "audienceId": "f5fcea30-4f5b-11e6-9a71-06010a0f1e01"
+ },
+ {
+ "audienceId": "7f9b2b80-4f5c-11e6-9a71-06010a0f1e01"
+ },
+ {
+ "audienceId": "2d28b480-5010-11e6-9fe9-06010a0f1e01"
+ },
+ {
+ "audienceId": "40ef73d0-4f63-11e6-8368-06010a0f1e01"
+ },
+ {
+ "audienceId": "6fa929e0-4f64-11e6-8368-06010a0f1e01"
+ },
+ {
+ "audienceId": "69c54d60-502c-11e6-af05-06010a0f1e01"
+ },
+ {
+ "audienceId": "3320cb90-4f64-11e6-8368-06010a0f1e01"
+ },
+ {
+ "audienceId": "bd0ebb00-4dd9-11e6-abd6-06010a0f1e01"
+ },
+ {
+ "audienceId": "28fa2d90-2c45-11e8-8ba7-02420a050b10"
+ },
+ {
+ "audienceId": "e53f3190-df6e-11e7-9a37-02420a053510"
+ },
+ {
+ "audienceId": "7a732b30-f2d6-11e6-b4fe-06010a0f1e01"
+ },
+ {
+ "audienceId": "5b4af8a0-3ca1-11e6-93ff-06010a0f1e01"
+ },
+ {
+ "audienceId": "ba13ed10-f2d6-11e6-b4fe-06010a0f1e01"
+ },
+ {
+ "audienceId": "94f99930-48bb-11e8-b546-02420a050b09"
+ },
+ {
+ "audienceId": "56b5ca40-4628-11e7-8417-02420a05350c"
+ },
+ {
+ "audienceId": "5a835220-af23-11e5-a5db-06010a0f1676"
+ },
+ {
+ "audienceId": "35bb0350-341b-11e8-9454-02420a053308"
+ },
+ {
+ "audienceId": "8344f650-6e2c-11e6-8830-06010a0f1e01"
+ },
+ {
+ "audienceId": "2d527eb0-59f9-11e8-99af-02420a053709"
+ },
+ {
+ "audienceId": "a855cce0-5670-11e6-99ea-06010a0f1e01"
+ },
+ {
+ "audienceId": "137a3ab0-74bc-11e6-9f69-06010a0f1e01"
+ },
+ {
+ "audienceId": "879b7780-7203-11e6-b8bb-06010a0f1e01"
+ },
+ {
+ "audienceId": "4dc62c20-ce2e-11e7-8424-8e95dafd3f08"
+ },
+ {
+ "audienceId": "27022940-ce2e-11e7-8424-8e95dafd3f08"
+ },
+ {
+ "audienceId": "aa1d7650-7f69-11e6-9166-06010a0f1e01"
+ },
+ {
+ "audienceId": "6aedfcb0-59e3-11e8-bb25-02420a051b12"
+ },
+ {
+ "audienceId": "1b6032c0-595d-11e8-94d3-02420a053d0f"
+ },
+ {
+ "audienceId": "ccfc9580-5919-11e8-a37d-02420a051212"
+ },
+ {
+ "audienceId": "7ecc5920-592a-11e8-bc5f-02420a053d0f"
+ },
+ {
+ "audienceId": "1bc36880-59f9-11e8-99af-02420a053709"
+ },
+ {
+ "audienceId": "ad3a9400-593b-11e8-94d3-02420a053d0f"
+ },
+ {
+ "audienceId": "d16c06e0-59c4-11e8-a78c-02420a053d0f"
+ },
+ {
+ "audienceId": "3e28bd50-5916-11e8-a37d-02420a051212"
+ },
+ {
+ "audienceId": "403269a0-590e-11e8-a219-02420a052b0d"
+ },
+ {
+ "audienceId": "ab8c05c0-59a0-11e8-94d3-02420a053d0f"
+ },
+ {
+ "audienceId": "b7df82b0-597e-11e8-94d3-02420a053d0f"
+ },
+ {
+ "audienceId": "2fe1fa80-58f9-11e8-a583-02420a053709"
+ }
+ ]
+ }
+}
+```
diff --git a/sequoia-graphql/index.js b/sequoia-graphql/index.js
new file mode 100644
index 000000000..b953eb144
--- /dev/null
+++ b/sequoia-graphql/index.js
@@ -0,0 +1,721 @@
+const restify = require('restify');
+const { graphqlRestify, graphiqlRestify } = require('apollo-server-restify');
+const {makeExecutableSchema } = require('graphql-tools');
+const axios = require('axios');
+const corsMiddleware = require('restify-cors-middleware');
+
+const cors = corsMiddleware({
+ origins: ['*']
+});
+
+const PORT = 3000;
+
+const server = restify.createServer({
+ title: 'Apollo Server',
+});
+
+server.pre(cors.preflight);
+
+const typeDefs = `
+type AiSegmentResults {
+ uidUploadSegmentId: Int
+ viewSegmentId: Int
+ modelSegmentId: Int
+ modelId: Int
+ viewSegmentIds: [Int]
+ uidSegmentIds: [Int]
+ }
+
+ input AiSegmentResultsInput {
+ uidUploadSegmentId: Int
+ viewSegmentId: Int
+ modelSegmentId: Int
+ modelId: Int
+ viewSegmentIds: [Int]
+ uidSegmentIds: [Int]
+ }
+
+ type ApiException {
+ cause: Throwable
+ stackTrace: [StackTraceElement]
+ response: Response
+ message: String
+ localizedMessage: String
+ suppressed: [Throwable]
+ }
+
+ type Audience {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ audienceId: String
+ userEmail: String
+ score: Float
+ uniqueUsers: Int
+ createdTs: String
+ modifiedTs: String
+ lastAccessedTs: String
+ collectionStartTs: String
+ collectionStopTs: String
+ activation: AudienceActivation
+ activated: Boolean
+ origin: AudienceOrigin
+ randomSampled: Boolean
+ status: String
+ insightsReady: Boolean
+ uniqueDomains: Int
+ acaciaVersion: String
+ skipAudit: Boolean
+ unifiedInsights: Boolean
+ categoryId: String
+ }
+
+ type AudienceActivation {
+ activationDate: String
+ endDate: String
+ integrationCode: String
+ integrationName: String
+ modeled: Boolean
+ refreshWeekly: Boolean
+ modelTarget: Int
+ notes: String
+ dspId: Int
+ buyerId: String
+ buyerName: String
+ partner: String
+ pixel: String
+ opportunityId: String
+ sugarId: String
+ cpm: AudienceActivation_cpm
+ filters: AudienceActivation_filters
+ segmentIds: AiSegmentResults
+ activationFailure: Boolean
+ extractionComplete: Boolean
+ }
+
+ type AudienceActivation_cpm {
+ """default field"""
+ empty: String
+ }
+
+ input AudienceActivation_cpmInput {
+ """default field"""
+ empty: String
+ }
+
+ type AudienceActivation_filters {
+ """default field"""
+ empty: String
+ }
+
+ input AudienceActivation_filtersInput {
+ """default field"""
+ empty: String
+ }
+
+ input AudienceActivationInput {
+ activationDate: String
+ endDate: String
+ integrationCode: String
+ integrationName: String
+ modeled: Boolean
+ refreshWeekly: Boolean
+ modelTarget: Int
+ notes: String
+ dspId: Int
+ buyerId: String
+ buyerName: String
+ partner: String
+ pixel: String
+ opportunityId: String
+ sugarId: String
+ cpm: AudienceActivation_cpmInput
+ filters: AudienceActivation_filtersInput
+ segmentIds: AiSegmentResultsInput
+ activationFailure: Boolean
+ extractionComplete: Boolean
+ }
+
+ input AudienceBooleanCreateInput {
+ dateFrom: String
+ dateTo: String
+ entities: String
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ }
+
+ input AudienceBooleanEvalInput {
+ dateFrom: String
+ dateTo: String
+ entities: String
+ domainsBlack: [String]
+ countryCode: String
+ }
+
+ input AudienceCreateInput {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ }
+
+ input AudienceCreateInputSegmentInput {
+ dateFrom: String
+ dateTo: String
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ segmentIds: [Int]
+ }
+
+ input AudienceCreateInputUidsInput {
+ dateFrom: String
+ dateTo: String
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ uids: [String]
+ doSampling: Boolean
+ }
+
+ input AudienceCreateInputUidTranslationInput {
+ doSampling: Boolean
+ name: String
+ domainsBlack: [String]
+ partnerId: Int
+ partnerUids: String
+ totalUids: Int
+ countryCode: String
+ }
+
+ input AudienceEvalInput {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+ }
+
+ type audienceInsights {
+ """default field"""
+ empty: String
+ }
+
+ type AudienceOrigin {
+ domainsBlack: [String]
+ userTitle: String
+ userDescription: String
+ type: String
+ }
+
+ type AudienceOutput {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ audienceId: String
+ userEmail: String
+ score: Float
+ uniqueUsers: Int
+ createdTs: String
+ modifiedTs: String
+ lastAccessedTs: String
+ collectionStartTs: String
+ collectionStopTs: String
+ activation: AudienceActivation
+ activated: Boolean
+ origin: AudienceOrigin
+ randomSampled: Boolean
+ status: String
+ insightsReady: Boolean
+ uniqueDomains: Int
+ acaciaVersion: String
+ skipAudit: Boolean
+ unifiedInsights: Boolean
+ categoryId: String
+ modeling: ModelOutput
+ flags: [String]
+ state: String
+ }
+
+ type AudienceScoreResponse {
+ score: Float
+ uniqueUsers: String
+ }
+
+ type BuyerAcct {
+ id: String
+ buyerId: String
+ name: String
+ dspId: Int
+ opportunityId: String
+ cpm: BuyerAcct_cpm
+ }
+
+ type BuyerAcct_cpm {
+ """default field"""
+ empty: String
+ }
+
+ type DiscoveryResponseItem {
+ entity: String
+ matched: [String]
+ relevance: String
+ uniqueDomains: String
+ uniqueUsers: String
+ topDomains: [String]
+ }
+
+ type downloadInsights {
+ """default field"""
+ empty: String
+ }
+
+ type EntityTag {
+ value: String
+ weak: Boolean
+ }
+
+ type get {
+ """default field"""
+ empty: String
+ }
+
+ type getInsights {
+ """default field"""
+ empty: String
+ }
+
+ type getInsightsUsingFlame {
+ """default field"""
+ empty: String
+ }
+
+ type getInsightsUsingHydra {
+ """default field"""
+ empty: String
+ }
+
+ type getKeys {
+ """default field"""
+ empty: String
+ }
+
+ type getRelatedEntityCounts {
+ """default field"""
+ empty: String
+ }
+
+ type getUrlsForEntities {
+ """default field"""
+ empty: String
+ }
+
+ type Link {
+ params: Link_params
+ title: String
+ uri: String
+ uriBuilder: UriBuilder
+ rel: String
+ rels: [String]
+ type: String
+ }
+
+ type Link_params {
+ """default field"""
+ empty: String
+ }
+
+ type Locale {
+ language: String
+ script: String
+ country: String
+ variant: String
+ extensionKeys: [String]
+ unicodeLocaleAttributes: [String]
+ unicodeLocaleKeys: [String]
+ iso3Language: String
+ iso3Country: String
+ displayLanguage: String
+ displayScript: String
+ displayCountry: String
+ displayVariant: String
+ displayName: String
+ }
+
+ type MediaType {
+ type: String
+ subtype: String
+ parameters: MediaType_parameters
+ wildcardType: Boolean
+ wildcardSubtype: Boolean
+ }
+
+ type MediaType_parameters {
+ """default field"""
+ empty: String
+ }
+
+ type ModelOutput {
+ formattedBuckets: [Int]
+ recommendSize: Int
+ strictSize: Int
+ modelingUnits: Int
+ modelStatus: String
+ }
+
+ type Mutation {
+ activate(audienceId: String, body: AudienceActivationInput): AudienceActivation
+ updateActivation(audienceId: String, body: AudienceActivationInput): AudienceActivation
+
+ """Evaluate an audience definition without saving it to the system."""
+ evaluate(body: AudienceEvalInput): AudienceScoreResponse
+
+ """
+ Save an audience definition to the system using provided set of UIDs. Response
+ will provide a audience ID. Audience name must be unique. Uids can be input as
+ a list of strings and as a giant comma-separated string.
+ """
+ createTypeUid(body: AudienceCreateInputUidsInput): Audience
+ buildThirdPartyCategoryAudience(countryCode: String, categoryId: String): Audience
+
+ """Deletes audience permanently. Action cannot be undone"""
+ delete(audienceId: String!): Boolean
+
+ """Evaluate an audience definition without saving it to the system."""
+ evaluateBoolean(body: AudienceBooleanEvalInput): AudienceScoreResponse
+
+ """
+ Save an audience definition to the system. You should use the 'eval' endpoint
+ first to evaluate combinations of keywords that result in highest score before
+ you create the audience. Response will provide a audience ID if audience
+ passes validation rules, otherwise an error will be returned.Audience name must be unique
+ """
+ createTypeEntity(entityInput: AudienceCreateInput): Audience
+
+ """
+ Save an audience definition to the system. You should use the 'eval' endpoint
+ first to evaluate combinations of keywords that result in highest score before
+ you create the audience. Response will provide a audience ID if audience
+ passes validation rules, otherwise an error will be returned.Audience name must be unique
+ """
+ createTypeBooleanEntity(body: AudienceBooleanCreateInput): Audience
+
+ """Renames audience with the given name"""
+ rename_(audienceId: String, name: String): AudienceOutput
+
+ """
+ Save an audience definition to the system using provided set of HHIDs.
+ Response will provide a audience ID. Audience name must be unique. Audience
+ minimums are enforced and will return a 400 if they are not met.HHIDs can be
+ input as a list of strings and as a giant comma-separated string.
+ """
+ createTypeHHID(body: param_createTypeHHID_bodyInput): Audience
+
+ """
+ Save an audience definition to the system after translating a provided set of
+ partner UIDs. Response will provide ??? Uids can be input as a list of strings
+ and as a giant comma-separated string.
+ """
+ createTypeUidTranslation(body: AudienceCreateInputUidTranslationInput): Audience
+
+ """
+ Save an audience definition to the system using AddThis Segment IDs. Response
+ will provide a audience ID. Audience name must be unique.
+ """
+ createTypeSegment(body: AudienceCreateInputSegmentInput): Audience
+
+ """
+ Authenticates BlueKai token and redirects to dashboard on failure or success
+ """
+ post(bksso: String): post
+
+ """
+ Authenticates BlueKai token and redirects to insights on failure or success
+ """
+ getInsights(audienceId: String, backUrl: String, bksso: String): getInsights
+
+ """Redirects to insights page"""
+ guestInsights(bksso: String, countryCode: String, categoryId: String): ApiException
+ tokenExchange(bksso: String): User
+ getRelatedEntityCounts(body: AudienceEvalInput): getRelatedEntityCounts
+
+ """
+ Validates provided entities and returns UID counts for each entity that has any signal.
+ """
+ validateEntities(body: AudienceEvalInput): validateEntities
+ showAnalyticsTour(show: Boolean): showAnalyticsTour
+ }
+
+ """name"""
+ input param_createTypeHHID_bodyInput {
+ """default field"""
+ empty: String
+ }
+
+ type pivotDimension {
+ """default field"""
+ empty: String
+ }
+
+ type pivotTaggedEntities {
+ """default field"""
+ empty: String
+ }
+
+ type post {
+ """default field"""
+ empty: String
+ }
+
+ type Query {
+ getActivation(audienceId: String): AudienceActivation
+ getThirdPartyCategoryAudience(countryCode: String, categoryId: String): Audience
+
+ """
+ List all audiences available to the current user, and (if showGroup=true) the group
+ """
+ getAudiences(showGroup: Boolean!): [AudienceOutput]
+
+ hello: String
+
+ """Return the audience definition of a specific audience."""
+ getByAudienceOutputById(audienceId: String): Audience
+
+ """
+ This can be used to check that the audience name is acceptable before making a long creation request
+ """
+ validAudienceName(name: String): validAudienceName
+
+ """
+ The response will be 404 until the translation is complete and the audience is subsequently created
+ """
+ getAudienceIdForUidTranslation(translationId: String): Audience
+
+ """
+ Authenticates BlueKai token and redirects to dashboard on failure or success
+ """
+ get: get
+
+ """
+ The discovery endpoint is an interactive query endpoint designed to help a
+ user discover entities in the system. The user would supply a keyword or
+ phrase and the system would respond with related phrases with a UU and domain
+ count in JSON format. By selecting a number of entities with larger UU and
+ domain counts, the user can assemble entities to later be used in the audience
+ eval & creation endpoints.
+ """
+ getEntityCounts(entity: [String], endDate: String, startDate: String, countryCode: String): [DiscoveryResponseItem]
+
+ """
+ Gets all Categories and counts which members of the given audience are a part of.
+ """
+ audienceInsights(id: String, global: Boolean, baselineAudience: String): audienceInsights
+
+ """
+ Gets all Categories and counts which members of the given audience are a part of.
+ """
+ downloadInsights(id: String, baselineAudience: String): downloadInsights
+ getStrategies: [String]
+
+ """Gets respective keys of pivots"""
+ getKeys(countryCode: String): getKeys
+
+ """
+ The insights endpoint is the heart of the query system. In this endpoint, you
+ specify the audience, and a dimension. Dimensions that support normalization
+ are 'topic','deviceType','osType','dateHour','usState', a 400 error will be
+ returned if normalization is requested for an unsupported dimension. Most
+ dimensions will return both UU count (uids) and View count (views). For
+ dimensions whether either of these measures aren't supported, 'null' will be
+ returned. Data is returned for last 30 days and based on US-only users.
+ """
+ pivotDimension(audienceId: String, dimension: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String, baselineAudience: String): pivotDimension
+
+ """
+ Gets the corresponding URLs which contributed to the given entity for the given audience.
+ """
+ getUrlsForEntities(audienceId: String, entity: String, dateFrom: String, dateTo: String): getUrlsForEntities
+
+ """Tags that are supported are 'brand','person'."""
+ pivotTaggedEntities(audienceId: String, tag: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String): pivotTaggedEntities
+ getInsightsUsingFlame(audienceId: String, dimension: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String): getInsightsUsingFlame
+ getInsightsUsingHydra(audienceId: String, dimension: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String): getInsightsUsingHydra
+ getBuyerAccounts: [BuyerAcct]
+ }
+
+ type Response {
+ date: String
+ lastModified: String
+ headers: Response_headers
+ status: Int
+ metadata: Response_metadata
+ allowedMethods: [String]
+ cookies: Response_cookies
+ statusInfo: StatusType
+ entity: Response_entity
+ stringHeaders: Response_stringHeaders
+ mediaType: MediaType
+ entityTag: EntityTag
+ links: [Link]
+ length: Int
+ language: Locale
+ location: String
+ }
+
+ type Response_cookies {
+ """default field"""
+ empty: String
+ }
+
+ type Response_entity {
+ """default field"""
+ empty: String
+ }
+
+ type Response_headers {
+ """default field"""
+ empty: String
+ }
+
+ type Response_metadata {
+ """default field"""
+ empty: String
+ }
+
+ type Response_stringHeaders {
+ """default field"""
+ empty: String
+ }
+
+ type showAnalyticsTour {
+ """default field"""
+ empty: String
+ }
+
+ type StackTraceElement {
+ methodName: String
+ fileName: String
+ lineNumber: Int
+ className: String
+ nativeMethod: Boolean
+ }
+
+ type StatusType {
+ family: String
+ statusCode: Int
+ reasonPhrase: String
+ }
+
+ type Throwable {
+ cause: Throwable
+ stackTrace: [StackTraceElement]
+ message: String
+ localizedMessage: String
+ suppressed: [Throwable]
+ }
+
+ type UriBuilder {
+ """default field"""
+ empty: String
+ }
+
+ type User {
+ id: String
+ email: String
+ group: String
+ accessToken: String
+ accessTokenResetTs: String
+ passwordFailedAttempts: [String]
+ passwordResetTs: String
+ passwordResetTokenCreatedTs: String
+ rememberMeTokenCreatedTs: String
+ createdTs: String
+ modifiedTs: String
+ state: String
+ userPreferences: User_userPreferences
+ }
+
+ type User_userPreferences {
+ """default field"""
+ empty: String
+ }
+
+ type validateEntities {
+ """default field"""
+ empty: String
+ }
+
+ type validAudienceName {
+ """default field"""
+ empty: String
+ }
+`;
+
+const sequoia = axios.create({
+ baseURL: 'http://sequoia-test.kubesvc-iad.clearspring.local/api/1.0',
+ timeout: 60000,
+ headers: {
+ 'Authorization': 'c470375e-8a8c-4430-b8de-e8b09cda7ff8'
+ }
+})
+
+const resolvers = {
+ Query: {
+ getAudiences(obj, args, context, info) {
+ console.log(args)
+ const url = 'audiences?showGroup=' + args.showGroup;
+ console.log(`Using URL: ${url}`);
+ return sequoia.get(url).then((response) => response.data);
+ },
+ hello() {
+ return "Goodbye"
+ }
+ },
+ Mutation: {
+ delete(obj, {audienceId}, context, info) {
+ const url = 'audiences/' + audienceId;
+ console.log(`Gonna delete with ${url}`);
+ return sequoia.delete(url).then(({status}) => status === 200);
+ } ,
+ createTypeEntity(obj, {entityInput}, context, info) {
+ // input AudienceCreateInput {
+ // dateFrom: String
+ // dateTo: String
+ // entities: [String]
+ // domainsBlack: [String]
+ // countryCode: String
+ // name: String
+ // }
+ const url = 'audiences/create-type-entity';
+ return sequoia.post(url, entityInput).then(({data}) => data);
+ }
+ }
+}
+
+const myGraphQLSchema = makeExecutableSchema({typeDefs, resolvers});
+const graphQLOptions = { schema: myGraphQLSchema };
+
+// server.use((req, res, next) => {
+// res.header("Access-Control-Allow-Origin", "*");
+// res.header("Access-Control-Allow-Headers", "X-Requested-With");
+// return next();
+// });
+server.use(cors.actual);
+server.use(restify.plugins.bodyParser());
+server.use(restify.plugins.queryParser());
+
+server.post('/graphql', graphqlRestify(graphQLOptions));
+server.get('/graphql', graphqlRestify(graphQLOptions));
+
+server.get('/graphiql', graphiqlRestify({ endpointURL: '/graphql' }));
+
+server.listen(PORT, () => console.log(`Listening on ${PORT}`));
\ No newline at end of file
diff --git a/sequoia-graphql/package.json b/sequoia-graphql/package.json
new file mode 100644
index 000000000..c5f46dcc5
--- /dev/null
+++ b/sequoia-graphql/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "sequoia-graphql",
+ "version": "1.0.0",
+ "description": "Help Sequoia do GraphQL",
+ "main": "index.js",
+ "scripts": {
+ "start:watch": "nodemon ./index.js localhost 3000",
+ "test": "test"
+ },
+ "repository": {
+ "type": "git",
+ "url": ".."
+ },
+ "keywords": [
+ "sequoia",
+ "graphql"
+ ],
+ "author": "tyrell",
+ "license": "ISC",
+ "dependencies": {
+ "apollo-server-restify": "^1.3.6",
+ "axios": "^0.18.0",
+ "graphql": "^0.13.2",
+ "graphql-tools": "^3.0.1",
+ "nodemon": "^1.17.4",
+ "restify": "^7.2.0",
+ "restify-cors-middleware": "^1.1.0"
+ }
+}
diff --git a/sequoia-graphql/schema.graphql.txt b/sequoia-graphql/schema.graphql.txt
new file mode 100644
index 000000000..c1d55792f
--- /dev/null
+++ b/sequoia-graphql/schema.graphql.txt
@@ -0,0 +1,640 @@
+type AiSegmentResults {
+ uidUploadSegmentId: Int
+ viewSegmentId: Int
+ modelSegmentId: Int
+ modelId: Int
+ viewSegmentIds: [Int]
+ uidSegmentIds: [Int]
+}
+
+input AiSegmentResultsInput {
+ uidUploadSegmentId: Int
+ viewSegmentId: Int
+ modelSegmentId: Int
+ modelId: Int
+ viewSegmentIds: [Int]
+ uidSegmentIds: [Int]
+}
+
+type ApiException {
+ cause: Throwable
+ stackTrace: [StackTraceElement]
+ response: Response
+ message: String
+ localizedMessage: String
+ suppressed: [Throwable]
+}
+
+type Audience {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ audienceId: String
+ userEmail: String
+ score: Int
+ uniqueUsers: Int
+ createdTs: String
+ modifiedTs: String
+ lastAccessedTs: String
+ collectionStartTs: String
+ collectionStopTs: String
+ activation: AudienceActivation
+ activated: Boolean
+ origin: AudienceOrigin
+ randomSampled: Boolean
+ status: String
+ insightsReady: Boolean
+ uniqueDomains: Int
+ acaciaVersion: String
+ skipAudit: Boolean
+ unifiedInsights: Boolean
+ categoryId: String
+}
+
+type AudienceActivation {
+ activationDate: String
+ endDate: String
+ integrationCode: String
+ integrationName: String
+ modeled: Boolean
+ refreshWeekly: Boolean
+ modelTarget: Int
+ notes: String
+ dspId: Int
+ buyerId: String
+ buyerName: String
+ partner: String
+ pixel: String
+ opportunityId: String
+ sugarId: String
+ cpm: AudienceActivation_cpm
+ filters: AudienceActivation_filters
+ segmentIds: AiSegmentResults
+ activationFailure: Boolean
+ extractionComplete: Boolean
+}
+
+type AudienceActivation_cpm {
+ """default field"""
+ empty: String
+}
+
+input AudienceActivation_cpmInput {
+ """default field"""
+ empty: String
+}
+
+type AudienceActivation_filters {
+ """default field"""
+ empty: String
+}
+
+input AudienceActivation_filtersInput {
+ """default field"""
+ empty: String
+}
+
+input AudienceActivationInput {
+ activationDate: String
+ endDate: String
+ integrationCode: String
+ integrationName: String
+ modeled: Boolean
+ refreshWeekly: Boolean
+ modelTarget: Int
+ notes: String
+ dspId: Int
+ buyerId: String
+ buyerName: String
+ partner: String
+ pixel: String
+ opportunityId: String
+ sugarId: String
+ cpm: AudienceActivation_cpmInput
+ filters: AudienceActivation_filtersInput
+ segmentIds: AiSegmentResultsInput
+ activationFailure: Boolean
+ extractionComplete: Boolean
+}
+
+input AudienceBooleanCreateInput {
+ dateFrom: String
+ dateTo: String
+ entities: String
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+}
+
+input AudienceBooleanEvalInput {
+ dateFrom: String
+ dateTo: String
+ entities: String
+ domainsBlack: [String]
+ countryCode: String
+}
+
+input AudienceCreateInput {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+}
+
+input AudienceCreateInputSegmentInput {
+ dateFrom: String
+ dateTo: String
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ segmentIds: [Int]
+}
+
+input AudienceCreateInputUidsInput {
+ dateFrom: String
+ dateTo: String
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ uids: [String]
+ doSampling: Boolean
+}
+
+input AudienceCreateInputUidTranslationInput {
+ doSampling: Boolean
+ name: String
+ domainsBlack: [String]
+ partnerId: Int
+ partnerUids: String
+ totalUids: Int
+ countryCode: String
+}
+
+input AudienceEvalInput {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+}
+
+type audienceInsights {
+ """default field"""
+ empty: String
+}
+
+type AudienceOrigin {
+ domainsBlack: [String]
+ userTitle: String
+ userDescription: String
+ type: String
+}
+
+type AudienceOutput {
+ dateFrom: String
+ dateTo: String
+ entities: [String]
+ domainsBlack: [String]
+ countryCode: String
+ name: String
+ audienceId: String
+ userEmail: String
+ score: Int
+ uniqueUsers: Int
+ createdTs: String
+ modifiedTs: String
+ lastAccessedTs: String
+ collectionStartTs: String
+ collectionStopTs: String
+ activation: AudienceActivation
+ activated: Boolean
+ origin: AudienceOrigin
+ randomSampled: Boolean
+ status: String
+ insightsReady: Boolean
+ uniqueDomains: Int
+ acaciaVersion: String
+ skipAudit: Boolean
+ unifiedInsights: Boolean
+ categoryId: String
+ modeling: ModelOutput
+ flags: [String]
+ state: String
+}
+
+type AudienceScoreResponse {
+ score: Int
+ uniqueUsers: String
+}
+
+type BuyerAcct {
+ id: String
+ buyerId: String
+ name: String
+ dspId: Int
+ opportunityId: String
+ cpm: BuyerAcct_cpm
+}
+
+type BuyerAcct_cpm {
+ """default field"""
+ empty: String
+}
+
+type DiscoveryResponseItem {
+ entity: String
+ matched: [String]
+ relevance: String
+ uniqueDomains: String
+ uniqueUsers: String
+ topDomains: [String]
+}
+
+type downloadInsights {
+ """default field"""
+ empty: String
+}
+
+type EntityTag {
+ value: String
+ weak: Boolean
+}
+
+type get {
+ """default field"""
+ empty: String
+}
+
+type getInsights {
+ """default field"""
+ empty: String
+}
+
+type getInsightsUsingFlame {
+ """default field"""
+ empty: String
+}
+
+type getInsightsUsingHydra {
+ """default field"""
+ empty: String
+}
+
+type getKeys {
+ """default field"""
+ empty: String
+}
+
+type getRelatedEntityCounts {
+ """default field"""
+ empty: String
+}
+
+type getUrlsForEntities {
+ """default field"""
+ empty: String
+}
+
+type Link {
+ params: Link_params
+ title: String
+ uri: String
+ uriBuilder: UriBuilder
+ rel: String
+ rels: [String]
+ type: String
+}
+
+type Link_params {
+ """default field"""
+ empty: String
+}
+
+type Locale {
+ language: String
+ script: String
+ country: String
+ variant: String
+ extensionKeys: [String]
+ unicodeLocaleAttributes: [String]
+ unicodeLocaleKeys: [String]
+ iso3Language: String
+ iso3Country: String
+ displayLanguage: String
+ displayScript: String
+ displayCountry: String
+ displayVariant: String
+ displayName: String
+}
+
+type MediaType {
+ type: String
+ subtype: String
+ parameters: MediaType_parameters
+ wildcardType: Boolean
+ wildcardSubtype: Boolean
+}
+
+type MediaType_parameters {
+ """default field"""
+ empty: String
+}
+
+type ModelOutput {
+ formattedBuckets: [Int]
+ recommendSize: Int
+ strictSize: Int
+ modelingUnits: Int
+ modelStatus: String
+}
+
+type Mutation {
+ activate(audienceId: String, body: AudienceActivationInput): AudienceActivation
+ updateActivation(audienceId: String, body: AudienceActivationInput): AudienceActivation
+
+ """Evaluate an audience definition without saving it to the system."""
+ evaluate(body: AudienceEvalInput): AudienceScoreResponse
+
+ """
+ Save an audience definition to the system using provided set of UIDs. Response
+ will provide a audience ID. Audience name must be unique. Uids can be input as
+ a list of strings and as a giant comma-separated string.
+ """
+ createTypeUid(body: AudienceCreateInputUidsInput): Audience
+ buildThirdPartyCategoryAudience(countryCode: String, categoryId: String): Audience
+
+ """Deletes audience permanently. Action cannot be undone"""
+ delete(audienceId: String): Audience
+
+ """Evaluate an audience definition without saving it to the system."""
+ evaluateBoolean(body: AudienceBooleanEvalInput): AudienceScoreResponse
+
+ """
+ Save an audience definition to the system. You should use the 'eval' endpoint
+ first to evaluate combinations of keywords that result in highest score before
+ you create the audience. Response will provide a audience ID if audience
+ passes validation rules, otherwise an error will be returned.Audience name must be unique
+ """
+ createTypeEntity(body: AudienceCreateInput): Audience
+
+ """
+ Save an audience definition to the system. You should use the 'eval' endpoint
+ first to evaluate combinations of keywords that result in highest score before
+ you create the audience. Response will provide a audience ID if audience
+ passes validation rules, otherwise an error will be returned.Audience name must be unique
+ """
+ createTypeBooleanEntity(body: AudienceBooleanCreateInput): Audience
+
+ """Renames audience with the given name"""
+ rename_(audienceId: String, name: String): AudienceOutput
+
+ """
+ Save an audience definition to the system using provided set of HHIDs.
+ Response will provide a audience ID. Audience name must be unique. Audience
+ minimums are enforced and will return a 400 if they are not met.HHIDs can be
+ input as a list of strings and as a giant comma-separated string.
+ """
+ createTypeHHID(body: param_createTypeHHID_bodyInput): Audience
+
+ """
+ Save an audience definition to the system after translating a provided set of
+ partner UIDs. Response will provide ??? Uids can be input as a list of strings
+ and as a giant comma-separated string.
+ """
+ createTypeUidTranslation(body: AudienceCreateInputUidTranslationInput): Audience
+
+ """
+ Save an audience definition to the system using AddThis Segment IDs. Response
+ will provide a audience ID. Audience name must be unique.
+ """
+ createTypeSegment(body: AudienceCreateInputSegmentInput): Audience
+
+ """
+ Authenticates BlueKai token and redirects to dashboard on failure or success
+ """
+ post(bksso: String): post
+
+ """
+ Authenticates BlueKai token and redirects to insights on failure or success
+ """
+ getInsights(audienceId: String, backUrl: String, bksso: String): getInsights
+
+ """Redirects to insights page"""
+ guestInsights(bksso: String, countryCode: String, categoryId: String): ApiException
+ tokenExchange(bksso: String): User
+ getRelatedEntityCounts(body: AudienceEvalInput): getRelatedEntityCounts
+
+ """
+ Validates provided entities and returns UID counts for each entity that has any signal.
+ """
+ validateEntities(body: AudienceEvalInput): validateEntities
+ showAnalyticsTour(show: Boolean): showAnalyticsTour
+}
+
+"""name"""
+input param_createTypeHHID_bodyInput {
+ """default field"""
+ empty: String
+}
+
+type pivotDimension {
+ """default field"""
+ empty: String
+}
+
+type pivotTaggedEntities {
+ """default field"""
+ empty: String
+}
+
+type post {
+ """default field"""
+ empty: String
+}
+
+type Query {
+ getActivation(audienceId: String): AudienceActivation
+ getThirdPartyCategoryAudience(countryCode: String, categoryId: String): Audience
+
+ """
+ List all audiences available to the current user, and (if showGroup=true) the group
+ """
+ getDecoratedByUserId(showGroup: Boolean): [Audience]
+
+ """Return the audience definition of a specific audience."""
+ getByAudienceOutputById(audienceId: String): Audience
+
+ """
+ This can be used to check that the audience name is acceptable before making a long creation request
+ """
+ validAudienceName(name: String): validAudienceName
+
+ """
+ The response will be 404 until the translation is complete and the audience is subsequently created
+ """
+ getAudienceIdForUidTranslation(translationId: String): Audience
+
+ """
+ Authenticates BlueKai token and redirects to dashboard on failure or success
+ """
+ get: get
+
+ """
+ The discovery endpoint is an interactive query endpoint designed to help a
+ user discover entities in the system. The user would supply a keyword or
+ phrase and the system would respond with related phrases with a UU and domain
+ count in JSON format. By selecting a number of entities with larger UU and
+ domain counts, the user can assemble entities to later be used in the audience
+ eval & creation endpoints.
+ """
+ getEntityCounts(entity: [String], endDate: String, startDate: String, countryCode: String): [DiscoveryResponseItem]
+
+ """
+ Gets all Categories and counts which members of the given audience are a part of.
+ """
+ audienceInsights(id: String, global: Boolean, baselineAudience: String): audienceInsights
+
+ """
+ Gets all Categories and counts which members of the given audience are a part of.
+ """
+ downloadInsights(id: String, baselineAudience: String): downloadInsights
+ getStrategies: [String]
+
+ """Gets respective keys of pivots"""
+ getKeys(countryCode: String): getKeys
+
+ """
+ The insights endpoint is the heart of the query system. In this endpoint, you
+ specify the audience, and a dimension. Dimensions that support normalization
+ are 'topic','deviceType','osType','dateHour','usState', a 400 error will be
+ returned if normalization is requested for an unsupported dimension. Most
+ dimensions will return both UU count (uids) and View count (views). For
+ dimensions whether either of these measures aren't supported, 'null' will be
+ returned. Data is returned for last 30 days and based on US-only users.
+ """
+ pivotDimension(audienceId: String, dimension: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String, baselineAudience: String): pivotDimension
+
+ """
+ Gets the corresponding URLs which contributed to the given entity for the given audience.
+ """
+ getUrlsForEntities(audienceId: String, entity: String, dateFrom: String, dateTo: String): getUrlsForEntities
+
+ """Tags that are supported are 'brand','person'."""
+ pivotTaggedEntities(audienceId: String, tag: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String): pivotTaggedEntities
+ getInsightsUsingFlame(audienceId: String, dimension: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String): getInsightsUsingFlame
+ getInsightsUsingHydra(audienceId: String, dimension: String, dateFrom: String, dateTo: String, deviceType: String, usState: String, osType: String, topic: String): getInsightsUsingHydra
+ getBuyerAccounts: [BuyerAcct]
+}
+
+type Response {
+ date: String
+ lastModified: String
+ headers: Response_headers
+ status: Int
+ metadata: Response_metadata
+ allowedMethods: [String]
+ cookies: Response_cookies
+ statusInfo: StatusType
+ entity: Response_entity
+ stringHeaders: Response_stringHeaders
+ mediaType: MediaType
+ entityTag: EntityTag
+ links: [Link]
+ length: Int
+ language: Locale
+ location: String
+}
+
+type Response_cookies {
+ """default field"""
+ empty: String
+}
+
+type Response_entity {
+ """default field"""
+ empty: String
+}
+
+type Response_headers {
+ """default field"""
+ empty: String
+}
+
+type Response_metadata {
+ """default field"""
+ empty: String
+}
+
+type Response_stringHeaders {
+ """default field"""
+ empty: String
+}
+
+type showAnalyticsTour {
+ """default field"""
+ empty: String
+}
+
+type StackTraceElement {
+ methodName: String
+ fileName: String
+ lineNumber: Int
+ className: String
+ nativeMethod: Boolean
+}
+
+type StatusType {
+ family: String
+ statusCode: Int
+ reasonPhrase: String
+}
+
+type Throwable {
+ cause: Throwable
+ stackTrace: [StackTraceElement]
+ message: String
+ localizedMessage: String
+ suppressed: [Throwable]
+}
+
+type UriBuilder {
+ """default field"""
+ empty: String
+}
+
+type User {
+ id: String
+ email: String
+ group: String
+ accessToken: String
+ accessTokenResetTs: String
+ passwordFailedAttempts: [String]
+ passwordResetTs: String
+ passwordResetTokenCreatedTs: String
+ rememberMeTokenCreatedTs: String
+ createdTs: String
+ modifiedTs: String
+ state: String
+ userPreferences: User_userPreferences
+}
+
+type User_userPreferences {
+ """default field"""
+ empty: String
+}
+
+type validateEntities {
+ """default field"""
+ empty: String
+}
+
+type validAudienceName {
+ """default field"""
+ empty: String
+}
+
diff --git a/sequoia-service/web/dashboard/js/app/apis/AudienceCreationAPIActionCreator.es6.js b/sequoia-service/web/dashboard/js/app/apis/AudienceCreationAPIActionCreator.es6.js
index dc8c7c201..31e82818b 100644
--- a/sequoia-service/web/dashboard/js/app/apis/AudienceCreationAPIActionCreator.es6.js
+++ b/sequoia-service/web/dashboard/js/app/apis/AudienceCreationAPIActionCreator.es6.js
@@ -1,5 +1,8 @@
import { APIActionCreator } from 'fluxthis';
import { ActionTypes } from 'AudienceCreationConstants';
+import {createApolloFetch} from 'apollo-fetch';
+
+const gimeGraphql = createApolloFetch({uri: "http://localhost:3000/graphql"});
export default new APIActionCreator({
displayName: 'AudienceCreationAPIActionCreator',
@@ -28,17 +31,17 @@ export default new APIActionCreator({
pending: ActionTypes.CREATE_AUDIENCE_PENDING,
failure: ActionTypes.CREATE_AUDIENCE_FAILURE,
createRequest(name, keywords, blacklist, country, route) {
- let body = {
- entities: keywords.toArray(),
- domainsBlack: blacklist.toArray(),
- name: name,
- countryCode: country
- };
-
- return {
- body: body,
- onSuccess: route //allows the store to know where to route
- };
+ const body = gimeGraphql({
+ query: 'mutation makeAThing{ createTypeEntity(entityInput: {entities: ' + keywords.toArray() + ', domainsBlack: ' + blacklist.toArray() + ', name: ' + name + ', countryCode: ' + country + '}) { dateFrom, dateTo, entities, domainsBlack, countryCode, name, audienceId, userEmail, score, uniqueUsers, createdTs, modifiedTs, lastAccessedTs, collectionStartTs, collectionStopTs, activation { activationDate, endDate, integrationCode, integrationName, modeled, refreshWeekly, modelTarget, notes, dspId, buyerId, buyerName, partner, pixel, opportunityId, sugarId, activationFailure, extractionComplete}, activated, origin { domainsBlack, userTitle, userDescription, type}, randomSampled, status, insightsReady, uniqueDomains, acaciaVersion, skipAudit, unifiedInsights, categoryId }}'
+ })
+ .then(res => {
+ console.log("FYI: creation data", res);
+ return res.data.createTypeEntity;
+ });
+ return {
+ body: body,
+ onSuccess: route
+ }
}
},
diff --git a/sequoia-service/web/dashboard/js/app/apis/SequoiaAPI.es6.js b/sequoia-service/web/dashboard/js/app/apis/SequoiaAPI.es6.js
index 7e2d4fc17..7cb69e7d3 100644
--- a/sequoia-service/web/dashboard/js/app/apis/SequoiaAPI.es6.js
+++ b/sequoia-service/web/dashboard/js/app/apis/SequoiaAPI.es6.js
@@ -9,15 +9,16 @@
*/
import $ from 'jquery';
import ApiUtil from 'ApiUtil';
+import {createApolloFetch} from 'apollo-fetch';
+
+const gimeGraphql = createApolloFetch({uri: "http://localhost:3000/graphql"});
var SequoiaAPI = {
base1Url: '/api/1.0/audiences/',
base1MetaUrl: '/api/1.0/metadata/',
pivot: '/data/dimension/',
entityInfo: '/data/entity-info',
-
pivotRequests: {},
-
getStrategies(callback) {
return this.requestSequoiaData(this.base1MetaUrl + 'strategies', callback);
},
@@ -40,8 +41,16 @@ var SequoiaAPI = {
* @param {Function} callback
*/
getAudiences(callback) {
- var url = this.base1Url + '?showGroup=true';
- this.requestSequoiaData(url, callback);
+ gimeGraphql({
+ query: 'query getAThing{ getAudiences(showGroup:false) { dateFrom, dateTo, state, flags, entities, domainsBlack, countryCode, name, audienceId, userEmail, score, uniqueUsers, createdTs, modifiedTs, lastAccessedTs, collectionStartTs, collectionStopTs, activation { activationDate, endDate, integrationCode, integrationName, modeled, refreshWeekly, modelTarget, notes, dspId, buyerId, buyerName, partner, pixel, opportunityId, sugarId, activationFailure, extractionComplete}, activated, origin { domainsBlack, userTitle, userDescription, type}, randomSampled, status, insightsReady, uniqueDomains, acaciaVersion, skipAudit, unifiedInsights, categoryId }}'
+ })
+ .then(res => {
+ console.log("FYI: data", res);
+ callback(res.data.getAudiences);
+ });
+
+ // var url = this.base1Url + '?showGroup=true';
+ // this.requestSequoiaData(url, callback);
},
/**
@@ -247,8 +256,13 @@ var SequoiaAPI = {
* @param {Function} callback
*/
deleteAudience(params, callback) {
- var url = this.base1Url + params.audienceId;
- this.deleteSequoiaData(url, callback);
+ gimeGraphql({
+ query: 'mutation deleteAThing{ delete(audienceId: "' + params.audienceId + '")}'
+ })
+ .then(res => {
+ console.log("FYI: deletion response", res);
+ callback(res);
+ });
},
deleteSequoiaData(url, callback) {
@@ -268,7 +282,7 @@ var SequoiaAPI = {
const metaRegexResult = /(\/metadata\/$)/g.exec(url);
let shouldStoreRequest = false, requestValue = '';
if (dimensionRegexResult || metaRegexResult) {
- requestValue = (dimensionRegexResult)
+ requestValue = (dimensionRegexResult)
? dimensionRegexResult[0]
: metaRegexResult[0];
if (this.pivotRequests[requestValue] && this.pivotRequests[requestValue].readyState !== 4) {
@@ -276,8 +290,8 @@ var SequoiaAPI = {
this.pivotRequests[requestValue].abort();
}
shouldStoreRequest = true;
- }
- const request =
+ }
+ const request =
$.ajax({
url: url,
method: 'GET'
diff --git a/sequoia-service/web/package-lock.json b/sequoia-service/web/package-lock.json
index fb87f134a..5e7d1bdfb 100644
--- a/sequoia-service/web/package-lock.json
+++ b/sequoia-service/web/package-lock.json
@@ -207,12 +207,12 @@
"dependencies": {
"object-assign": {
"version": "4.1.1",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/object-assign/-/object-assign-4.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"prop-types": {
"version": "15.6.1",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/prop-types/-/prop-types-15.6.1.tgz",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz",
"integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==",
"requires": {
"fbjs": "0.8.16",
@@ -326,6 +326,15 @@
"string-hash": "1.1.3"
}
},
+ "apollo-fetch": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/apollo-fetch/-/apollo-fetch-0.7.0.tgz",
+ "integrity": "sha512-0oHsDW3Zxx+Of1wuqcOXruNj4Kv55WN69tkIjwkCQDEIrgCpgA2scjChFsgflSVMy/1mkTKCY1Mc0TYJhNRzmw==",
+ "dev": true,
+ "requires": {
+ "cross-fetch": "1.1.1"
+ }
+ },
"append-transform": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
@@ -1834,7 +1843,7 @@
},
"invariant": {
"version": "2.2.4",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/invariant/-/invariant-2.2.4.tgz",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"requires": {
"loose-envify": "1.3.1"
@@ -2268,7 +2277,7 @@
},
"bowser": {
"version": "1.9.3",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/bowser/-/bowser-1.9.3.tgz",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.3.tgz",
"integrity": "sha512-/gp96UlcFw5DbV2KQPCqTqi0Mb9gZRyDAHiDsGEH+4B/KOQjeoE5lM1PxlVX8DQDvfEfitmC1rW2Oy8fk/XBDg=="
},
"brace-expansion": {
@@ -2990,23 +2999,31 @@
"integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ="
},
"compressible": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz",
- "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=",
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz",
+ "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=",
"dev": true,
"requires": {
- "mime-db": "1.30.0"
+ "mime-db": "1.33.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ }
}
},
"compression": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz",
- "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=",
+ "version": "1.7.2",
+ "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz",
+ "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=",
"dev": true,
"requires": {
- "accepts": "1.3.4",
+ "accepts": "1.3.5",
"bytes": "3.0.0",
- "compressible": "2.0.12",
+ "compressible": "2.0.13",
"debug": "2.6.9",
"on-headers": "1.0.1",
"safe-buffer": "5.1.1",
@@ -3014,15 +3031,30 @@
},
"dependencies": {
"accepts": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
- "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"dev": true,
"requires": {
- "mime-types": "2.1.17",
+ "mime-types": "2.1.18",
"negotiator": "0.6.1"
}
},
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.33.0"
+ }
+ },
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
@@ -3218,7 +3250,7 @@
},
"cors": {
"version": "2.5.3",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/cors/-/cors-2.5.3.tgz",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.5.3.tgz",
"integrity": "sha1-DXCiEew7bMmCTmzcKZwGMO9pw5I=",
"requires": {
"vary": "1.0.1"
@@ -3301,6 +3333,16 @@
}
}
},
+ "cross-fetch": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-1.1.1.tgz",
+ "integrity": "sha512-+VJE04+UfxxmBfcnmAu/lKor53RUCx/1ilOti4p+JgrnLQ4AZZIRoe2OEd76VaHyWQmQxqKnV+TaqjHC4r0HWw==",
+ "dev": true,
+ "requires": {
+ "node-fetch": "1.7.3",
+ "whatwg-fetch": "2.0.3"
+ }
+ },
"cross-spawn": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
@@ -3384,7 +3426,7 @@
},
"css-in-js-utils": {
"version": "2.0.1",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz",
"integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==",
"requires": {
"hyphenate-style-name": "1.0.2",
@@ -4450,9 +4492,9 @@
}
},
"eventemitter3": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
- "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
+ "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
"dev": true
},
"events": {
@@ -4467,7 +4509,7 @@
"integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
"dev": true,
"requires": {
- "original": "1.0.0"
+ "original": "1.0.1"
}
},
"evp_bytestokey": {
@@ -6939,9 +6981,9 @@
"dev": true,
"requires": {
"inherits": "2.0.3",
- "obuf": "1.1.1",
+ "obuf": "1.1.2",
"readable-stream": "2.3.3",
- "wbuf": "1.7.2"
+ "wbuf": "1.7.3"
}
},
"html-comment-regex": {
@@ -7054,18 +7096,19 @@
}
},
"http-parser-js": {
- "version": "0.4.10",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
- "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
+ "version": "0.4.12",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz",
+ "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=",
"dev": true
},
"http-proxy": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
- "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
"dev": true,
"requires": {
- "eventemitter3": "1.2.0",
+ "eventemitter3": "3.1.0",
+ "follow-redirects": "1.4.1",
"requires-port": "1.0.0"
}
},
@@ -7075,7 +7118,7 @@
"integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
"dev": true,
"requires": {
- "http-proxy": "1.16.2",
+ "http-proxy": "1.17.0",
"is-glob": "3.1.0",
"lodash": "4.17.5",
"micromatch": "2.3.11"
@@ -9639,12 +9682,6 @@
"resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
"integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw="
},
- "lodash.endswith": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz",
- "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=",
- "dev": true
- },
"lodash.escape": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
@@ -9688,12 +9725,6 @@
"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
"integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
},
- "lodash.isfunction": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
- "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==",
- "dev": true
- },
"lodash.isnil": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz",
@@ -9705,12 +9736,6 @@
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
},
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
- "dev": true
- },
"lodash.keys": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
@@ -9787,12 +9812,6 @@
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
"dev": true
},
- "lodash.startswith": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz",
- "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=",
- "dev": true
- },
"lodash.template": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
@@ -10442,9 +10461,9 @@
}
},
"node-forge": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz",
- "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=",
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
+ "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
"dev": true
},
"node-gyp": {
@@ -11988,9 +12007,9 @@
}
},
"obuf": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz",
- "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true
},
"odc-bootstrap": {
@@ -12029,9 +12048,9 @@
"dev": true
},
"opn": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz",
- "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
+ "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
"dev": true,
"requires": {
"is-wsl": "1.1.0"
@@ -12070,7 +12089,7 @@
},
"options": {
"version": "0.0.6",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/options/-/options-0.0.6.tgz",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
},
"orchestrator": {
@@ -12091,24 +12110,12 @@
"dev": true
},
"original": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
- "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz",
+ "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==",
"dev": true,
"requires": {
- "url-parse": "1.0.5"
- },
- "dependencies": {
- "url-parse": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz",
- "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=",
- "dev": true,
- "requires": {
- "querystringify": "0.0.4",
- "requires-port": "1.0.0"
- }
- }
+ "url-parse": "1.4.0"
}
},
"os-browserify": {
@@ -12358,7 +12365,7 @@
},
"peer": {
"version": "0.2.8",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/peer/-/peer-0.2.8.tgz",
+ "resolved": "https://registry.npmjs.org/peer/-/peer-0.2.8.tgz",
"integrity": "sha1-mAFl3tf5Z2sLirMqFErwbgffPVM=",
"requires": {
"body-parser": "1.18.2",
@@ -12370,17 +12377,17 @@
"dependencies": {
"commander": {
"version": "2.1.0",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/commander/-/commander-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz",
"integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E="
},
"nan": {
"version": "1.0.0",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/nan/-/nan-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz",
"integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg="
},
"ws": {
"version": "0.4.32",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/ws/-/ws-0.4.32.tgz",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz",
"integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=",
"requires": {
"commander": "2.1.0",
@@ -13218,9 +13225,9 @@
"dev": true
},
"querystringify": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz",
- "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz",
+ "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==",
"dev": true
},
"raf": {
@@ -13317,7 +13324,7 @@
},
"rc-align": {
"version": "2.3.6",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/rc-align/-/rc-align-2.3.6.tgz",
+ "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-2.3.6.tgz",
"integrity": "sha512-sB9HpuyMZg5Yy+iIkraPv7/5uaMdUVpfitGFO5aOKKFE/rcEpWunaZdYjvTpPBHUsBrrEn/7qs/klD1YQPIQhA==",
"requires": {
"babel-runtime": "6.26.0",
@@ -13361,7 +13368,7 @@
},
"rc-util": {
"version": "4.5.0",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/rc-util/-/rc-util-4.5.0.tgz",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.5.0.tgz",
"integrity": "sha512-KYuFBBqxCFI8fb4Wva+X3fmAZpGPo4i9gTNdsVKldHVi3hrnv3VawF89CPndxfsV5QT3J+ic76X5c4erQETi1w==",
"requires": {
"add-dom-event-listener": "1.0.2",
@@ -13574,7 +13581,7 @@
},
"react-portal": {
"version": "4.1.5",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/react-portal/-/react-portal-4.1.5.tgz",
+ "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.1.5.tgz",
"integrity": "sha512-jJMy9DoVr4HRWPdO8IP/mDHP1Q972/aKkulVQeIrttOIyRNmCkR2IH7gK3HVjhzxy6M+k9TopSWN5q41wO/o6A==",
"requires": {
"prop-types": "15.6.0"
@@ -13837,7 +13844,7 @@
},
"reactabular-table": {
"version": "8.13.0",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/reactabular-table/-/reactabular-table-8.13.0.tgz",
+ "resolved": "https://registry.npmjs.org/reactabular-table/-/reactabular-table-8.13.0.tgz",
"integrity": "sha512-OTUam01W5vCsY91tLgkCXHW5d7ET1C024vBwVHD8YP5Uj+bw+8oPPvusogdmvGaPFwOI/rI3P3b7HkvDZSNhnw==",
"requires": {
"classnames": "2.2.5"
@@ -14509,12 +14516,12 @@
"dev": true
},
"selfsigned": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz",
- "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=",
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz",
+ "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==",
"dev": true,
"requires": {
- "node-forge": "0.7.1"
+ "node-forge": "0.7.5"
}
},
"semver": {
@@ -14566,7 +14573,7 @@
"integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
"dev": true,
"requires": {
- "accepts": "1.3.4",
+ "accepts": "1.3.5",
"batch": "0.6.1",
"debug": "2.6.9",
"escape-html": "1.0.3",
@@ -14576,13 +14583,24 @@
},
"dependencies": {
"accepts": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
- "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"dev": true,
"requires": {
- "mime-types": "2.1.17",
+ "mime-types": "2.1.18",
"negotiator": "0.6.1"
+ },
+ "dependencies": {
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.33.0"
+ }
+ }
}
},
"escape-html": {
@@ -14591,6 +14609,12 @@
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
"dev": true
},
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
@@ -14952,7 +14976,7 @@
"faye-websocket": "0.11.1",
"inherits": "2.0.3",
"json3": "3.3.2",
- "url-parse": "1.2.0"
+ "url-parse": "1.4.0"
},
"dependencies": {
"faye-websocket": {
@@ -15063,22 +15087,22 @@
"http-deceiver": "1.2.7",
"safe-buffer": "5.1.1",
"select-hose": "2.0.0",
- "spdy-transport": "2.0.20"
+ "spdy-transport": "2.1.0"
}
},
"spdy-transport": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz",
- "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz",
+ "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==",
"dev": true,
"requires": {
"debug": "2.6.9",
"detect-node": "2.0.3",
"hpack.js": "2.1.6",
- "obuf": "1.1.1",
+ "obuf": "1.1.2",
"readable-stream": "2.3.3",
"safe-buffer": "5.1.1",
- "wbuf": "1.7.2"
+ "wbuf": "1.7.3"
}
},
"split-string": {
@@ -15414,7 +15438,7 @@
"dependencies": {
"buffer": {
"version": "5.1.0",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/buffer/-/buffer-5.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz",
"integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==",
"requires": {
"base64-js": "1.2.1",
@@ -15438,7 +15462,7 @@
},
"stylis": {
"version": "3.5.0",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/stylis/-/stylis-3.5.0.tgz",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.0.tgz",
"integrity": "sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw=="
},
"subarg": {
@@ -15490,7 +15514,7 @@
},
"table-resolver": {
"version": "3.3.0",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/table-resolver/-/table-resolver-3.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/table-resolver/-/table-resolver-3.3.0.tgz",
"integrity": "sha512-BkdhtKYhWtXK54GeACs0khqlMvJ53puOw01tzIPsPUr3PP2pFeq9AelPUb7Iy7NeHMyIUI6vEfnngoWgEG+rLQ=="
},
"tapable": {
@@ -15609,7 +15633,7 @@
},
"tinycolor": {
"version": "0.0.1",
- "resolved": "https://buildspring.clearspring.local/nexus/content/groups/npm-standard/tinycolor/-/tinycolor-0.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz",
"integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ="
},
"tmpl": {
@@ -16783,16 +16807,10 @@
}
},
"upath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.2.tgz",
- "integrity": "sha512-fCmij7T5LnwUme3dbnVSejvOHHlARjB3ikJFwgZfz386pHmf/gueuTLRFU94FZEaeCLlbQrweiUU700gG41tUw==",
- "dev": true,
- "requires": {
- "lodash.endswith": "4.2.1",
- "lodash.isfunction": "3.0.9",
- "lodash.isstring": "4.0.1",
- "lodash.startswith": "4.2.1"
- }
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
+ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+ "dev": true
},
"upper-case": {
"version": "1.1.3",
@@ -16825,21 +16843,13 @@
}
},
"url-parse": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz",
- "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz",
+ "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==",
"dev": true,
"requires": {
- "querystringify": "1.0.0",
+ "querystringify": "2.0.0",
"requires-port": "1.0.0"
- },
- "dependencies": {
- "querystringify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz",
- "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=",
- "dev": true
- }
}
},
"use": {
@@ -17185,9 +17195,9 @@
}
},
"wbuf": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz",
- "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=",
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
"dev": true,
"requires": {
"minimalistic-assert": "1.0.0"
@@ -17470,20 +17480,20 @@
}
},
"webpack-dev-server": {
- "version": "2.11.1",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz",
- "integrity": "sha512-ombhu5KsO/85sVshIDTyQ5HF3xjZR3N0sf5Ao6h3vFwpNyzInEzA1GV3QPVjTMLTNckp8PjfG1PFGznzBwS5lg==",
+ "version": "2.11.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz",
+ "integrity": "sha512-zrPoX97bx47vZiAXfDrkw8pe9QjJ+lunQl3dypojyWwWr1M5I2h0VSrMPfTjopHQPRNn+NqfjcMmhoLcUJe2gA==",
"dev": true,
"requires": {
"ansi-html": "0.0.7",
"array-includes": "3.0.3",
"bonjour": "3.5.0",
- "chokidar": "2.0.2",
- "compression": "1.7.1",
+ "chokidar": "2.0.3",
+ "compression": "1.7.2",
"connect-history-api-fallback": "1.5.0",
"debug": "3.1.0",
"del": "3.0.0",
- "express": "4.16.2",
+ "express": "4.16.3",
"html-entities": "1.2.1",
"http-proxy-middleware": "0.17.4",
"import-local": "1.0.0",
@@ -17491,26 +17501,26 @@
"ip": "1.1.5",
"killable": "1.0.0",
"loglevel": "1.6.1",
- "opn": "5.2.0",
+ "opn": "5.3.0",
"portfinder": "1.0.13",
- "selfsigned": "1.10.2",
+ "selfsigned": "1.10.3",
"serve-index": "1.9.1",
"sockjs": "0.3.19",
"sockjs-client": "1.1.4",
"spdy": "3.4.7",
"strip-ansi": "3.0.1",
- "supports-color": "5.2.0",
+ "supports-color": "5.4.0",
"webpack-dev-middleware": "1.12.2",
"yargs": "6.6.0"
},
"dependencies": {
"accepts": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
- "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"dev": true,
"requires": {
- "mime-types": "2.1.17",
+ "mime-types": "2.1.18",
"negotiator": "0.6.1"
}
},
@@ -17520,7 +17530,7 @@
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
- "micromatch": "3.1.5",
+ "micromatch": "3.1.10",
"normalize-path": "2.1.1"
}
},
@@ -17543,14 +17553,13 @@
"dev": true
},
"braces": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz",
- "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"dev": true,
"requires": {
"arr-flatten": "1.1.0",
"array-unique": "0.3.2",
- "define-property": "1.0.0",
"extend-shallow": "2.0.1",
"fill-range": "4.0.0",
"isobject": "3.0.1",
@@ -17558,7 +17567,18 @@
"snapdragon": "0.8.1",
"snapdragon-node": "2.1.1",
"split-string": "3.1.0",
- "to-regex": "3.0.1"
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
}
},
"camelcase": {
@@ -17568,14 +17588,14 @@
"dev": true
},
"chokidar": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz",
- "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz",
+ "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==",
"dev": true,
"requires": {
"anymatch": "2.0.0",
"async-each": "1.0.1",
- "braces": "2.3.0",
+ "braces": "2.3.2",
"fsevents": "1.1.3",
"glob-parent": "3.1.0",
"inherits": "2.0.3",
@@ -17584,7 +17604,7 @@
"normalize-path": "2.1.1",
"path-is-absolute": "1.0.0",
"readdirp": "2.1.0",
- "upath": "1.0.2"
+ "upath": "1.1.0"
}
},
"cliui": {
@@ -17619,6 +17639,16 @@
"ms": "2.0.0"
}
},
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2",
+ "isobject": "3.0.1"
+ }
+ },
"del": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
@@ -17675,7 +17705,7 @@
"posix-character-classes": "0.1.1",
"regex-not": "1.0.0",
"snapdragon": "0.8.1",
- "to-regex": "3.0.1"
+ "to-regex": "3.0.2"
},
"dependencies": {
"debug": {
@@ -17695,16 +17725,42 @@
"requires": {
"is-descriptor": "0.1.6"
}
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
}
}
},
"express": {
- "version": "4.16.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz",
- "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=",
+ "version": "4.16.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
+ "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
"dev": true,
"requires": {
- "accepts": "1.3.4",
+ "accepts": "1.3.5",
"array-flatten": "1.1.1",
"body-parser": "1.18.2",
"content-disposition": "0.5.2",
@@ -17716,22 +17772,22 @@
"encodeurl": "1.0.2",
"escape-html": "1.0.3",
"etag": "1.8.1",
- "finalhandler": "1.1.0",
+ "finalhandler": "1.1.1",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "1.1.2",
"on-finished": "2.3.0",
"parseurl": "1.3.2",
"path-to-regexp": "0.1.7",
- "proxy-addr": "2.0.2",
+ "proxy-addr": "2.0.3",
"qs": "6.5.1",
"range-parser": "1.2.0",
"safe-buffer": "5.1.1",
- "send": "0.16.1",
- "serve-static": "1.13.1",
+ "send": "0.16.2",
+ "serve-static": "1.13.2",
"setprototypeof": "1.1.0",
- "statuses": "1.3.1",
- "type-is": "1.6.15",
+ "statuses": "1.4.0",
+ "type-is": "1.6.16",
"utils-merge": "1.0.1",
"vary": "1.1.2"
},
@@ -17747,6 +17803,27 @@
}
}
},
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
"extglob": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
@@ -17760,7 +17837,27 @@
"fragment-cache": "0.2.1",
"regex-not": "1.0.0",
"snapdragon": "0.8.1",
- "to-regex": "3.0.1"
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
}
},
"fill-range": {
@@ -17773,12 +17870,23 @@
"is-number": "3.0.0",
"repeat-string": "1.6.1",
"to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
}
},
"finalhandler": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
- "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"dev": true,
"requires": {
"debug": "2.6.9",
@@ -17786,7 +17894,7 @@
"escape-html": "1.0.3",
"on-finished": "2.3.0",
"parseurl": "1.3.2",
- "statuses": "1.3.1",
+ "statuses": "1.4.0",
"unpipe": "1.0.0"
},
"dependencies": {
@@ -17856,9 +17964,9 @@
"dev": true
},
"ipaddr.js": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz",
- "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
+ "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=",
"dev": true
},
"is-accessor-descriptor": {
@@ -17901,25 +18009,6 @@
}
}
},
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "0.1.6",
- "is-data-descriptor": "0.1.4",
- "kind-of": "5.1.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -17955,6 +18044,29 @@
}
}
},
+ "is-odd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
+ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ }
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -17968,24 +18080,24 @@
"dev": true
},
"micromatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz",
- "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
"dev": true,
"requires": {
"arr-diff": "4.0.0",
"array-unique": "0.3.2",
- "braces": "2.3.0",
- "define-property": "1.0.0",
- "extend-shallow": "2.0.1",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
"extglob": "2.0.4",
"fragment-cache": "0.2.1",
"kind-of": "6.0.2",
- "nanomatch": "1.2.7",
+ "nanomatch": "1.2.9",
"object.pick": "1.3.0",
"regex-not": "1.0.0",
"snapdragon": "0.8.1",
- "to-regex": "3.0.1"
+ "to-regex": "3.0.2"
}
},
"mime": {
@@ -17994,6 +18106,41 @@
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"dev": true
},
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.33.0"
+ }
+ },
+ "nanomatch": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
+ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "fragment-cache": "0.2.1",
+ "is-odd": "2.0.0",
+ "is-windows": "1.0.2",
+ "kind-of": "6.0.2",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.0",
+ "snapdragon": "0.8.1",
+ "to-regex": "3.0.2"
+ }
+ },
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
@@ -18028,13 +18175,13 @@
"dev": true
},
"proxy-addr": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
- "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
+ "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
"dev": true,
"requires": {
"forwarded": "0.1.2",
- "ipaddr.js": "1.5.2"
+ "ipaddr.js": "1.6.0"
}
},
"qs": {
@@ -18050,9 +18197,9 @@
"dev": true
},
"send": {
- "version": "0.16.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
- "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
"dev": true,
"requires": {
"debug": "2.6.9",
@@ -18067,7 +18214,7 @@
"ms": "2.0.0",
"on-finished": "2.3.0",
"range-parser": "1.2.0",
- "statuses": "1.3.1"
+ "statuses": "1.4.0"
},
"dependencies": {
"debug": {
@@ -18082,26 +18229,66 @@
}
},
"serve-static": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
- "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
"dev": true,
"requires": {
"encodeurl": "1.0.2",
"escape-html": "1.0.3",
"parseurl": "1.3.2",
- "send": "0.16.1"
+ "send": "0.16.2"
}
},
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "dev": true
+ },
"supports-color": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz",
- "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
"has-flag": "3.0.0"
}
},
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "regex-not": "1.0.2",
+ "safe-regex": "1.1.0"
+ },
+ "dependencies": {
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
+ }
+ }
+ }
+ },
+ "type-is": {
+ "version": "1.6.16",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "dev": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "2.1.18"
+ }
+ },
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -18170,7 +18357,7 @@
"integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
"dev": true,
"requires": {
- "http-parser-js": "0.4.10",
+ "http-parser-js": "0.4.12",
"websocket-extensions": "0.1.3"
}
},
diff --git a/sequoia-service/web/package.json b/sequoia-service/web/package.json
index b326d09a2..d52c7debd 100644
--- a/sequoia-service/web/package.json
+++ b/sequoia-service/web/package.json
@@ -75,6 +75,7 @@
"@types/jest": "^22.2.3",
"@types/lodash": "^4.14.108",
"@types/react": "^16.3.10",
+ "apollo-fetch": "0.7.0",
"babel-core": "6.17.0",
"babel-jest": "22.4.3",
"babel-loader": "6.2.5",
@@ -126,6 +127,6 @@
"typescript": "^2.7.2",
"uglify-save-license": "0.4.1",
"webpack": "3.10.0",
- "webpack-dev-server": "2.11.1"
+ "webpack-dev-server": "^2.11.2"
}
}
diff --git a/sequoia-service/web/webpack.config.js b/sequoia-service/web/webpack.config.js
index f5d97e52e..7058b0b88 100644
--- a/sequoia-service/web/webpack.config.js
+++ b/sequoia-service/web/webpack.config.js
@@ -32,7 +32,7 @@ var env = {
ignored: /node_modules/
},
devServer: {
- ignoreUnaccepted: true,
+ //ignoreUnaccepted: true,
proxy: {
"/api": "http://localhost:8022",
"/internal": "http://localhost:8022",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment