@transcend-io/cli
Advanced tools
Comparing version 2.2.5 to 3.0.0
@@ -15,3 +15,3 @@ #!/usr/bin/env node | ||
/** | ||
* Sync data silo configuration from Transcend down locally to disk | ||
* Scan dependency files for new data silos. | ||
* | ||
@@ -51,5 +51,6 @@ * Dev Usage: | ||
// Indicate success | ||
logger_1.logger.info(colors_1.default.green(`Scan found ${results.length} potential data silos at ${scanPath}! View at ${constants_1.ADMIN_DASH}`)); | ||
logger_1.logger.info(colors_1.default.green(`Scan found ${results.length} potential data silos at ${scanPath}! ` + | ||
`View at ${constants_1.ADMIN_DASH}/data-map/data-inventory/silo-discovery/triage`)); | ||
} | ||
main(); | ||
//# sourceMappingURL=cli-discover-silos.js.map |
@@ -65,3 +65,3 @@ import * as t from 'io-ts'; | ||
*/ | ||
export declare const ProcessingPurposeInput: t.IntersectionC<[t.TypeC<{ | ||
export declare const ProcessingPurposeInput: t.TypeC<{ | ||
/** The parent purpose */ | ||
@@ -83,6 +83,5 @@ purpose: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this processing purpose sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this processing purpose sub category */ | ||
name: t.StringC; | ||
}>]>; | ||
}>; | ||
/** Type override */ | ||
@@ -93,3 +92,3 @@ export declare type ProcessingPurposeInput = t.TypeOf<typeof ProcessingPurposeInput>; | ||
*/ | ||
export declare const DataCategoryInput: t.IntersectionC<[t.TypeC<{ | ||
export declare const DataCategoryInput: t.TypeC<{ | ||
/** The parent category */ | ||
@@ -113,6 +112,5 @@ category: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this sub category */ | ||
name: t.StringC; | ||
}>]>; | ||
}>; | ||
/** Type override */ | ||
@@ -137,3 +135,3 @@ export declare type DataCategoryInput = t.TypeOf<typeof DataCategoryInput>; | ||
*/ | ||
purposes: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
purposes: t.ArrayC<t.TypeC<{ | ||
/** The parent purpose */ | ||
@@ -155,6 +153,5 @@ purpose: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this processing purpose sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this processing purpose sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
/** | ||
@@ -165,3 +162,3 @@ * The category of personal data for this datapoint | ||
*/ | ||
categories: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
categories: t.ArrayC<t.TypeC<{ | ||
/** The parent category */ | ||
@@ -185,6 +182,5 @@ category: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
}>]>; | ||
@@ -209,46 +205,2 @@ /** Type override */ | ||
/** | ||
* What is the purpose of processing for this datapoint/table? | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The purpose labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
purpose: t.KeyofC<{ | ||
ESSENTIAL: unknown; | ||
ADDITIONAL_FUNCTIONALITY: unknown; | ||
ADVERTISING: unknown; | ||
MARKETING: unknown; | ||
ANALYTICS: unknown; | ||
PERSONALIZATION: unknown; | ||
OPERATION_SECURITY: unknown; | ||
LEGAL: unknown; | ||
TRANSFER: unknown; | ||
SALE: unknown; | ||
HR: unknown; | ||
OTHER: unknown; | ||
UNSPECIFIED: unknown; | ||
}>; | ||
/** | ||
* The category of personal data for this datapoint | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The category labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
category: t.KeyofC<{ | ||
OTHER: unknown; | ||
UNSPECIFIED: unknown; | ||
FINANCIAL: unknown; | ||
HEALTH: unknown; | ||
CONTACT: unknown; | ||
LOCATION: unknown; | ||
DEMOGRAPHIC: unknown; | ||
ID: unknown; | ||
ONLINE_ACTIVITY: unknown; | ||
USER_PROFILE: unknown; | ||
SOCIAL_MEDIA: unknown; | ||
CONNECTION: unknown; | ||
TRACKING: unknown; | ||
DEVICE: unknown; | ||
SURVEY: unknown; | ||
}>; | ||
/** | ||
* The SQL queries that should be run for that datapoint in a privacy request. | ||
@@ -302,3 +254,3 @@ * | ||
*/ | ||
purposes: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
purposes: t.ArrayC<t.TypeC<{ | ||
/** The parent purpose */ | ||
@@ -320,6 +272,5 @@ purpose: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this processing purpose sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this processing purpose sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
/** | ||
@@ -330,3 +281,3 @@ * The category of personal data for this datapoint | ||
*/ | ||
categories: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
categories: t.ArrayC<t.TypeC<{ | ||
/** The parent category */ | ||
@@ -350,6 +301,5 @@ category: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
}>]>>; | ||
@@ -424,46 +374,2 @@ }>]>; | ||
/** | ||
* What is the purpose of processing for this datapoint/table? | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The purpose labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
purpose: t.KeyofC<{ | ||
ESSENTIAL: unknown; | ||
ADDITIONAL_FUNCTIONALITY: unknown; | ||
ADVERTISING: unknown; | ||
MARKETING: unknown; | ||
ANALYTICS: unknown; | ||
PERSONALIZATION: unknown; | ||
OPERATION_SECURITY: unknown; | ||
LEGAL: unknown; | ||
TRANSFER: unknown; | ||
SALE: unknown; | ||
HR: unknown; | ||
OTHER: unknown; | ||
UNSPECIFIED: unknown; | ||
}>; | ||
/** | ||
* The category of personal data for this datapoint | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The category labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
category: t.KeyofC<{ | ||
OTHER: unknown; | ||
UNSPECIFIED: unknown; | ||
FINANCIAL: unknown; | ||
HEALTH: unknown; | ||
CONTACT: unknown; | ||
LOCATION: unknown; | ||
DEMOGRAPHIC: unknown; | ||
ID: unknown; | ||
ONLINE_ACTIVITY: unknown; | ||
USER_PROFILE: unknown; | ||
SOCIAL_MEDIA: unknown; | ||
CONNECTION: unknown; | ||
TRACKING: unknown; | ||
DEVICE: unknown; | ||
SURVEY: unknown; | ||
}>; | ||
/** | ||
* The SQL queries that should be run for that datapoint in a privacy request. | ||
@@ -517,3 +423,3 @@ * | ||
*/ | ||
purposes: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
purposes: t.ArrayC<t.TypeC<{ | ||
/** The parent purpose */ | ||
@@ -535,6 +441,5 @@ purpose: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this processing purpose sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this processing purpose sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
/** | ||
@@ -545,3 +450,3 @@ * The category of personal data for this datapoint | ||
*/ | ||
categories: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
categories: t.ArrayC<t.TypeC<{ | ||
/** The parent category */ | ||
@@ -565,6 +470,5 @@ category: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
}>]>>; | ||
@@ -678,46 +582,2 @@ }>]>>; | ||
/** | ||
* What is the purpose of processing for this datapoint/table? | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The purpose labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
purpose: t.KeyofC<{ | ||
ESSENTIAL: unknown; | ||
ADDITIONAL_FUNCTIONALITY: unknown; | ||
ADVERTISING: unknown; | ||
MARKETING: unknown; | ||
ANALYTICS: unknown; | ||
PERSONALIZATION: unknown; | ||
OPERATION_SECURITY: unknown; | ||
LEGAL: unknown; | ||
TRANSFER: unknown; | ||
SALE: unknown; | ||
HR: unknown; | ||
OTHER: unknown; | ||
UNSPECIFIED: unknown; | ||
}>; | ||
/** | ||
* The category of personal data for this datapoint | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The category labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
category: t.KeyofC<{ | ||
OTHER: unknown; | ||
UNSPECIFIED: unknown; | ||
FINANCIAL: unknown; | ||
HEALTH: unknown; | ||
CONTACT: unknown; | ||
LOCATION: unknown; | ||
DEMOGRAPHIC: unknown; | ||
ID: unknown; | ||
ONLINE_ACTIVITY: unknown; | ||
USER_PROFILE: unknown; | ||
SOCIAL_MEDIA: unknown; | ||
CONNECTION: unknown; | ||
TRACKING: unknown; | ||
DEVICE: unknown; | ||
SURVEY: unknown; | ||
}>; | ||
/** | ||
* The SQL queries that should be run for that datapoint in a privacy request. | ||
@@ -771,3 +631,3 @@ * | ||
*/ | ||
purposes: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
purposes: t.ArrayC<t.TypeC<{ | ||
/** The parent purpose */ | ||
@@ -789,6 +649,5 @@ purpose: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this processing purpose sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this processing purpose sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
/** | ||
@@ -799,3 +658,3 @@ * The category of personal data for this datapoint | ||
*/ | ||
categories: t.ArrayC<t.IntersectionC<[t.TypeC<{ | ||
categories: t.ArrayC<t.TypeC<{ | ||
/** The parent category */ | ||
@@ -819,6 +678,5 @@ category: t.KeyofC<{ | ||
}>; | ||
}>, t.PartialC<{ | ||
/** User-defined name for this sub category. If not specified, will fall back to 'Other' */ | ||
/** User-defined name for this sub category */ | ||
name: t.StringC; | ||
}>]>>; | ||
}>>; | ||
}>]>>; | ||
@@ -825,0 +683,0 @@ }>]>>; |
@@ -78,25 +78,17 @@ "use strict"; | ||
*/ | ||
exports.ProcessingPurposeInput = t.intersection([ | ||
t.type({ | ||
/** The parent purpose */ | ||
purpose: (0, type_utils_1.valuesOf)(privacy_types_1.ProcessingPurpose), | ||
}), | ||
t.partial({ | ||
/** User-defined name for this processing purpose sub category. If not specified, will fall back to 'Other' */ | ||
name: t.string, | ||
}), | ||
]); | ||
exports.ProcessingPurposeInput = t.type({ | ||
/** The parent purpose */ | ||
purpose: (0, type_utils_1.valuesOf)(privacy_types_1.ProcessingPurpose), | ||
/** User-defined name for this processing purpose sub category */ | ||
name: t.string, | ||
}); | ||
/** | ||
* The data category for a field | ||
*/ | ||
exports.DataCategoryInput = t.intersection([ | ||
t.type({ | ||
/** The parent category */ | ||
category: (0, type_utils_1.valuesOf)(privacy_types_1.DataCategoryType), | ||
}), | ||
t.partial({ | ||
/** User-defined name for this sub category. If not specified, will fall back to 'Other' */ | ||
name: t.string, | ||
}), | ||
]); | ||
exports.DataCategoryInput = t.type({ | ||
/** The parent category */ | ||
category: (0, type_utils_1.valuesOf)(privacy_types_1.DataCategoryType), | ||
/** User-defined name for this sub category */ | ||
name: t.string, | ||
}); | ||
/** | ||
@@ -148,16 +140,2 @@ * Annotate specific fields within a datapoint. These are often database table columns. | ||
/** | ||
* What is the purpose of processing for this datapoint/table? | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The purpose labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
purpose: (0, type_utils_1.valuesOf)(privacy_types_1.ProcessingPurpose), | ||
/** | ||
* The category of personal data for this datapoint | ||
* | ||
* @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts | ||
* @deprecated - The category labels are now associated with fields rather than datapoints to allow for more granularity | ||
*/ | ||
category: (0, type_utils_1.valuesOf)(privacy_types_1.DataCategoryType), | ||
/** | ||
* The SQL queries that should be run for that datapoint in a privacy request. | ||
@@ -164,0 +142,0 @@ * |
@@ -189,20 +189,10 @@ "use strict"; | ||
const fields = datapoint.fields | ||
? datapoint.fields.map((field) => { | ||
var _a, _b; | ||
const categoriesWithFallback = (_a = field.categories) === null || _a === void 0 ? void 0 : _a.map((category) => ({ | ||
name: 'Other', | ||
...category, | ||
})); | ||
const purposesWithFallback = (_b = field.purposes) === null || _b === void 0 ? void 0 : _b.map((purpose) => ({ | ||
name: 'Other', | ||
...purpose, | ||
})); | ||
// TODO: Support setting title separately from the 'key/name' | ||
return { | ||
name: field.key, | ||
description: field.description, | ||
categories: categoriesWithFallback, | ||
purposes: purposesWithFallback, | ||
}; | ||
}) | ||
? datapoint.fields.map(({ key, description, categories, purposes }) => | ||
// TODO: Support setting title separately from the 'key/name' | ||
({ | ||
name: key, | ||
description, | ||
categories, | ||
purposes, | ||
})) | ||
: undefined; | ||
@@ -217,3 +207,2 @@ if (fields && fields.length > 0) { | ||
description: datapoint.description, | ||
category: datapoint.category, | ||
querySuggestions: !datapoint['privacy-action-queries'] | ||
@@ -225,3 +214,2 @@ ? undefined | ||
})), | ||
purpose: datapoint.purpose, | ||
enabledActions: datapoint['privacy-actions'] || [], | ||
@@ -228,0 +216,0 @@ subDataPoints: fields, |
@@ -5,3 +5,3 @@ { | ||
"description": "Small package containing useful typescript utilities.", | ||
"version": "2.2.5", | ||
"version": "3.0.0", | ||
"homepage": "https://github.com/transcend-io/cli", | ||
@@ -8,0 +8,0 @@ "repository": { |
@@ -15,2 +15,3 @@ <!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
- [Dynamic Variables](#dynamic-variables) | ||
- [tr-scan](#tr-scan) | ||
@@ -36,2 +37,3 @@ <!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
yarn tr-push --auth=xxx | ||
yarn tr-scan --auth=xxx | ||
``` | ||
@@ -48,2 +50,3 @@ | ||
tr-push --auth=xxx | ||
tr-scan --auth=xxx | ||
``` | ||
@@ -60,2 +63,3 @@ | ||
tr-push --auth=xxx | ||
tr-scan --auth=xxx | ||
``` | ||
@@ -306,1 +310,16 @@ | ||
``` | ||
### tr-scan | ||
Transcend can help scan dependency management files to help detect new data silos where you may be storing user personal data. Currently we support scanning for new data silos in package.json, but soon we will be adding more! | ||
To get started, you'll need to add a data silo with "silo discovery" plugin enabled. You can do this in the Transcend admin-dashboard (or via this CLI tooling). | ||
Then, you'll need to grab that `dataSiloId` and pass it to the CLI: | ||
```sh | ||
# Scan a javascript project (package.json files) to look for new data silos | ||
yarn tr-scan --scanPath=./myJavascriptProject --auth=asd123 --dataSiloId=abcdefg | ||
``` | ||
This call will look for all the package.json files that in the scan path `./myJavascriptProject`, parse each of the dependencies into their individual package names, and send it to our Transcend backend for classification. These classifications can then be viewed [here](https://app.transcend.io/data-map/data-inventory/silo-discovery/triage). |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
321
245028
2940