@transcend-io/cli 8.0.7 → 8.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -36
- package/dist/bin/bash-complete.cjs +1 -1
- package/dist/bin/cli.cjs +1 -1
- package/dist/bin/deprecated-command.cjs +2 -2
- package/dist/{chunk-H6YI2HZS.cjs → chunk-6CS4GCJ4.cjs} +2 -2
- package/dist/{chunk-H6YI2HZS.cjs.map → chunk-6CS4GCJ4.cjs.map} +1 -1
- package/dist/{chunk-2VX4QD73.cjs → chunk-BICC2LJL.cjs} +3 -3
- package/dist/{chunk-2VX4QD73.cjs.map → chunk-BICC2LJL.cjs.map} +1 -1
- package/dist/{chunk-K2E6TCB5.cjs → chunk-DVJLLHL3.cjs} +2 -2
- package/dist/{chunk-K2E6TCB5.cjs.map → chunk-DVJLLHL3.cjs.map} +1 -1
- package/dist/{chunk-S3HIPD4J.cjs → chunk-HI7ACKKB.cjs} +2 -2
- package/dist/{chunk-S3HIPD4J.cjs.map → chunk-HI7ACKKB.cjs.map} +1 -1
- package/dist/{chunk-4GRQMYW2.cjs → chunk-IFAKI5FF.cjs} +2 -2
- package/dist/{chunk-4GRQMYW2.cjs.map → chunk-IFAKI5FF.cjs.map} +1 -1
- package/dist/{chunk-E57K4DGX.cjs → chunk-MGAJ7ILD.cjs} +2 -2
- package/dist/{chunk-E57K4DGX.cjs.map → chunk-MGAJ7ILD.cjs.map} +1 -1
- package/dist/{chunk-SQVECTFA.cjs → chunk-MRXBJEKL.cjs} +22 -20
- package/dist/chunk-MRXBJEKL.cjs.map +1 -0
- package/dist/{chunk-GT7Q27PI.cjs → chunk-NC5QVXJW.cjs} +2 -2
- package/dist/{chunk-GT7Q27PI.cjs.map → chunk-NC5QVXJW.cjs.map} +1 -1
- package/dist/{chunk-RSN3DUTP.cjs → chunk-QPIUQDJ6.cjs} +4 -4
- package/dist/{chunk-RSN3DUTP.cjs.map → chunk-QPIUQDJ6.cjs.map} +1 -1
- package/dist/{chunk-HBKA5Z5A.cjs → chunk-QRDYTLVB.cjs} +2 -2
- package/dist/{chunk-HBKA5Z5A.cjs.map → chunk-QRDYTLVB.cjs.map} +1 -1
- package/dist/{chunk-OCNPZWYT.cjs → chunk-W6BLSHVE.cjs} +4 -4
- package/dist/{chunk-OCNPZWYT.cjs.map → chunk-W6BLSHVE.cjs.map} +1 -1
- package/dist/{chunk-NKFAEQ2Q.cjs → chunk-XKYSQSRO.cjs} +2 -2
- package/dist/{chunk-NKFAEQ2Q.cjs.map → chunk-XKYSQSRO.cjs.map} +1 -1
- package/dist/{impl-T5AW675H.cjs → impl-4VPFFGGS.cjs} +2 -2
- package/dist/{impl-T5AW675H.cjs.map → impl-4VPFFGGS.cjs.map} +1 -1
- package/dist/{impl-E7JWHVRJ.cjs → impl-5H6DFFAS.cjs} +2 -2
- package/dist/{impl-E7JWHVRJ.cjs.map → impl-5H6DFFAS.cjs.map} +1 -1
- package/dist/{impl-R3CY7ZIW.cjs → impl-6JRE252A.cjs} +2 -2
- package/dist/{impl-R3CY7ZIW.cjs.map → impl-6JRE252A.cjs.map} +1 -1
- package/dist/{impl-N2ANLQOJ.cjs → impl-7RJYKTCZ.cjs} +6 -6
- package/dist/{impl-N2ANLQOJ.cjs.map → impl-7RJYKTCZ.cjs.map} +1 -1
- package/dist/{impl-NRS5JFKV.cjs → impl-BKEVLUMO.cjs} +2 -2
- package/dist/{impl-NRS5JFKV.cjs.map → impl-BKEVLUMO.cjs.map} +1 -1
- package/dist/{impl-LTMYU2AY.cjs → impl-BRUSOMXU.cjs} +2 -2
- package/dist/{impl-LTMYU2AY.cjs.map → impl-BRUSOMXU.cjs.map} +1 -1
- package/dist/{impl-U6XFUPLF.cjs → impl-BUQ2V3WM.cjs} +2 -2
- package/dist/{impl-U6XFUPLF.cjs.map → impl-BUQ2V3WM.cjs.map} +1 -1
- package/dist/{impl-GS4CVUAP.cjs → impl-C7DRIULL.cjs} +2 -2
- package/dist/{impl-GS4CVUAP.cjs.map → impl-C7DRIULL.cjs.map} +1 -1
- package/dist/{impl-ACT4HEIF.cjs → impl-CK5QRU26.cjs} +2 -2
- package/dist/{impl-ACT4HEIF.cjs.map → impl-CK5QRU26.cjs.map} +1 -1
- package/dist/{impl-EU6DPMR5.cjs → impl-DDOPMEH6.cjs} +5 -5
- package/dist/{impl-EU6DPMR5.cjs.map → impl-DDOPMEH6.cjs.map} +1 -1
- package/dist/{impl-W4I4GTBC.cjs → impl-DYGW2VXN.cjs} +2 -2
- package/dist/{impl-W4I4GTBC.cjs.map → impl-DYGW2VXN.cjs.map} +1 -1
- package/dist/{impl-UOAWNR34.cjs → impl-ED76NZLR.cjs} +3 -3
- package/dist/{impl-UOAWNR34.cjs.map → impl-ED76NZLR.cjs.map} +1 -1
- package/dist/{impl-NWMCEWUU.cjs → impl-EL3GY7PX.cjs} +2 -2
- package/dist/{impl-NWMCEWUU.cjs.map → impl-EL3GY7PX.cjs.map} +1 -1
- package/dist/{impl-TGY32SCN.cjs → impl-FRDPRLKI.cjs} +2 -2
- package/dist/{impl-TGY32SCN.cjs.map → impl-FRDPRLKI.cjs.map} +1 -1
- package/dist/{impl-BRA6TEVA.cjs → impl-GDONPQQ6.cjs} +2 -2
- package/dist/{impl-BRA6TEVA.cjs.map → impl-GDONPQQ6.cjs.map} +1 -1
- package/dist/{impl-2NI344VN.cjs → impl-I3QZ2ZHY.cjs} +2 -2
- package/dist/{impl-2NI344VN.cjs.map → impl-I3QZ2ZHY.cjs.map} +1 -1
- package/dist/{impl-A7WOM6B2.cjs → impl-LBJYOQEP.cjs} +2 -2
- package/dist/{impl-A7WOM6B2.cjs.map → impl-LBJYOQEP.cjs.map} +1 -1
- package/dist/{impl-UHENI4EC.cjs → impl-LNF5A3IV.cjs} +2 -2
- package/dist/{impl-UHENI4EC.cjs.map → impl-LNF5A3IV.cjs.map} +1 -1
- package/dist/{impl-5XZA6XDY.cjs → impl-LV5VZGGG.cjs} +2 -2
- package/dist/{impl-5XZA6XDY.cjs.map → impl-LV5VZGGG.cjs.map} +1 -1
- package/dist/{impl-M6XVZEZC.cjs → impl-MT4XWK25.cjs} +2 -2
- package/dist/{impl-M6XVZEZC.cjs.map → impl-MT4XWK25.cjs.map} +1 -1
- package/dist/impl-NOS3MDB5.cjs +2 -0
- package/dist/{impl-K6UD53QP.cjs.map → impl-NOS3MDB5.cjs.map} +1 -1
- package/dist/{impl-ASZALW6O.cjs → impl-O6ZZ6G7V.cjs} +2 -2
- package/dist/{impl-ASZALW6O.cjs.map → impl-O6ZZ6G7V.cjs.map} +1 -1
- package/dist/{impl-MLVIXJWF.cjs → impl-OK6NKAWI.cjs} +2 -2
- package/dist/{impl-MLVIXJWF.cjs.map → impl-OK6NKAWI.cjs.map} +1 -1
- package/dist/{impl-2GZWVX2N.cjs → impl-OXVQMF3C.cjs} +2 -2
- package/dist/{impl-2GZWVX2N.cjs.map → impl-OXVQMF3C.cjs.map} +1 -1
- package/dist/{impl-JYM2T6AQ.cjs → impl-P3ZEQOP4.cjs} +2 -2
- package/dist/{impl-JYM2T6AQ.cjs.map → impl-P3ZEQOP4.cjs.map} +1 -1
- package/dist/{impl-HHPNH3QN.cjs → impl-PE35IGX2.cjs} +2 -2
- package/dist/{impl-HHPNH3QN.cjs.map → impl-PE35IGX2.cjs.map} +1 -1
- package/dist/{impl-KHR6CYYW.cjs → impl-PKQQUVYK.cjs} +2 -2
- package/dist/{impl-KHR6CYYW.cjs.map → impl-PKQQUVYK.cjs.map} +1 -1
- package/dist/{impl-MM7Z76YA.cjs → impl-QAMYNNJD.cjs} +2 -2
- package/dist/{impl-MM7Z76YA.cjs.map → impl-QAMYNNJD.cjs.map} +1 -1
- package/dist/impl-QPUYYCCD.cjs +38 -0
- package/dist/impl-QPUYYCCD.cjs.map +1 -0
- package/dist/{impl-MNZZSLBI.cjs → impl-SC7VG3C5.cjs} +2 -2
- package/dist/{impl-MNZZSLBI.cjs.map → impl-SC7VG3C5.cjs.map} +1 -1
- package/dist/{impl-KQNFC333.cjs → impl-SCX5AEQB.cjs} +2 -2
- package/dist/{impl-KQNFC333.cjs.map → impl-SCX5AEQB.cjs.map} +1 -1
- package/dist/{impl-P23VFJZF.cjs → impl-SWFUVUV6.cjs} +2 -2
- package/dist/{impl-P23VFJZF.cjs.map → impl-SWFUVUV6.cjs.map} +1 -1
- package/dist/{impl-SVCHBYPB.cjs → impl-TSGEOZLY.cjs} +2 -2
- package/dist/{impl-SVCHBYPB.cjs.map → impl-TSGEOZLY.cjs.map} +1 -1
- package/dist/{impl-B4RGQNKY.cjs → impl-US4VOSBF.cjs} +4 -4
- package/dist/{impl-B4RGQNKY.cjs.map → impl-US4VOSBF.cjs.map} +1 -1
- package/dist/{impl-CWWICDPC.cjs → impl-UZE2LR6H.cjs} +2 -2
- package/dist/{impl-CWWICDPC.cjs.map → impl-UZE2LR6H.cjs.map} +1 -1
- package/dist/impl-UZTSGARM.cjs +2 -0
- package/dist/{impl-UFXTQLXO.cjs.map → impl-UZTSGARM.cjs.map} +1 -1
- package/dist/impl-WO3LVKNE.cjs +2 -0
- package/dist/{impl-VUQ6T7ON.cjs.map → impl-WO3LVKNE.cjs.map} +1 -1
- package/dist/{impl-ERCHNSZD.cjs → impl-WVAGHUZI.cjs} +3 -3
- package/dist/{impl-ERCHNSZD.cjs.map → impl-WVAGHUZI.cjs.map} +1 -1
- package/dist/{impl-GTJ5DPQ4.cjs → impl-X2FXS267.cjs} +2 -2
- package/dist/{impl-GTJ5DPQ4.cjs.map → impl-X2FXS267.cjs.map} +1 -1
- package/dist/{impl-QC2QXWOW.cjs → impl-ZWNKU6OC.cjs} +2 -2
- package/dist/{impl-QC2QXWOW.cjs.map → impl-ZWNKU6OC.cjs.map} +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/package.json +1 -1
- package/dist/chunk-SQVECTFA.cjs.map +0 -1
- package/dist/impl-K6UD53QP.cjs +0 -2
- package/dist/impl-UFXTQLXO.cjs +0 -2
- package/dist/impl-VUQ6T7ON.cjs +0 -2
package/README.md
CHANGED
|
@@ -88,9 +88,11 @@
|
|
|
88
88
|
- [Examples](#examples-35)
|
|
89
89
|
- [`transcend admin generate-api-keys`](#transcend-admin-generate-api-keys)
|
|
90
90
|
- [Examples](#examples-36)
|
|
91
|
+
- [`transcend admin chunk-csv`](#transcend-admin-chunk-csv)
|
|
92
|
+
- [Examples](#examples-37)
|
|
91
93
|
- [`transcend migration sync-ot`](#transcend-migration-sync-ot)
|
|
92
94
|
- [Authentication](#authentication)
|
|
93
|
-
- [Examples](#examples-
|
|
95
|
+
- [Examples](#examples-38)
|
|
94
96
|
- [Prompt Manager](#prompt-manager)
|
|
95
97
|
- [Proxy usage](#proxy-usage)
|
|
96
98
|
|
|
@@ -2182,40 +2184,40 @@ FLAGS
|
|
|
2182
2184
|
|
|
2183
2185
|
The API key permissions for this command vary based on the `resources` argument:
|
|
2184
2186
|
|
|
2185
|
-
| Resource
|
|
2186
|
-
|
|
|
2187
|
-
| apiKeys | API Key definitions assigned to Data Silos. API keys cannot be created through the CLI, but you can map API key usage to Data
|
|
2188
|
-
| customFields | Custom
|
|
2189
|
-
| templates | Email templates. Only template titles can be created and mapped to other resources.
|
|
2190
|
-
| dataSilos | The Data Silo
|
|
2191
|
-
| enrichers | The Privacy Request enricher configurations.
|
|
2192
|
-
| dataFlows | Consent Manager Data Flow definitions.
|
|
2193
|
-
| businessEntities | The business entities in the
|
|
2194
|
-
| processingActivities | The processing activities in the
|
|
2195
|
-
| actions | The
|
|
2196
|
-
| dataSubjects | The
|
|
2197
|
-
| identifiers | The
|
|
2198
|
-
| cookies | Consent Manager Cookie definitions.
|
|
2199
|
-
| consentManager | Consent Manager general settings, including domain list.
|
|
2200
|
-
| partitions | The partitions in the account (often representative of separate data controllers).
|
|
2201
|
-
| prompts | The Transcend AI prompts
|
|
2202
|
-
| promptPartials | The Transcend AI prompt partials
|
|
2203
|
-
| promptGroups | The Transcend AI prompt groups
|
|
2204
|
-
| agents | The agents in
|
|
2205
|
-
| agentFunctions | The agent functions in
|
|
2206
|
-
| agentFiles | The agent files in
|
|
2207
|
-
| vendors | The vendors in the
|
|
2208
|
-
| dataCategories | The data categories in the
|
|
2209
|
-
| processingPurposes | The processing purposes in the
|
|
2210
|
-
| actionItems | Onboarding
|
|
2211
|
-
| actionItemCollections | Onboarding
|
|
2212
|
-
| teams | Team definitions of users and scope groupings
|
|
2213
|
-
| privacyCenters | The
|
|
2214
|
-
| policies | The
|
|
2215
|
-
| messages | Message definitions used across
|
|
2216
|
-
| assessments | Assessment responses.
|
|
2217
|
-
| assessmentTemplates | Assessment template configurations.
|
|
2218
|
-
| purposes | Consent purposes and related preference management topics.
|
|
2187
|
+
| Resource | Key in `transcend.yml` | Description | Scopes | Link |
|
|
2188
|
+
| ----------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
2189
|
+
| `apiKeys` | `api-keys` | API Key definitions assigned to Data Systems (formerly "Data Silos"). API keys cannot be created through the CLI, but you can map API key usage to Data Systems. | View API Keys | [Developer Tools -> API keys](https://app.transcend.io/infrastructure/api-keys) |
|
|
2190
|
+
| `customFields` | `attributes` | Custom Field definitions that define extra metadata for each table in the Admin Dashboard. | View Global Attributes | [Custom Fields](https://app.transcend.io/infrastructure/attributes) |
|
|
2191
|
+
| `templates` | `templates` | Email templates. Only template titles can be created and mapped to other resources. | View Email Templates | [DSR Automation -> Email Settings -> Templates](https://app.transcend.io/privacy-requests/email-settings/templates) |
|
|
2192
|
+
| `dataSilos` | `data-silos` | The Data System (formerly "Data Silo") definitions. | View Data Map, View Data Subject Request Settings | [Data Inventory -> Data Systems](https://app.transcend.io/data-map/data-inventory/data-silos)<br>[Infrastructure -> Integrations](https://app.transcend.io/infrastructure/integrations) |
|
|
2193
|
+
| `enrichers` | `enrichers` | The Privacy Request enricher configurations. | View Identity Verification Settings | [DSR Automation -> Identifiers](https://app.transcend.io/privacy-requests/identifiers) |
|
|
2194
|
+
| `dataFlows` | `data-flows` | Consent Manager Data Flow definitions. | View Data Flows | [Consent Management -> Data Flows](https://app.transcend.io/consent-manager/data-flows/approved) |
|
|
2195
|
+
| `businessEntities` | `business-entities` | The business entities in the Data Inventory. | View Data Inventory | [Data Inventory -> Business Entities](https://app.transcend.io/data-map/data-inventory/business-entities) |
|
|
2196
|
+
| `processingActivities` | `processing-activities` | The processing activities in the Data Inventory. | View Data Inventory | [Data Inventory -> Processing Activities](https://app.transcend.io/data-map/data-inventory/processing-activities) |
|
|
2197
|
+
| `actions` | `actions` | The privacy request action settings. | View Data Subject Request Settings | [DSR Automation -> Request Settings -> Data Actions](https://app.transcend.io/privacy-requests/settings/data-actions) |
|
|
2198
|
+
| `dataSubjects` | `data-subjects` | The privacy request data subject settings. | View Data Subject Request Settings | [DSR Automation -> Request Settings -> Data Subjects](https://app.transcend.io/privacy-requests/settings/data-subjects) |
|
|
2199
|
+
| `identifiers` | `identifiers` | The privacy request identifier configurations. | View Identity Verification Settings | [DSR Automation -> Identifiers](https://app.transcend.io/privacy-requests/identifiers) |
|
|
2200
|
+
| `cookies` | `cookies` | Consent Manager Cookie definitions. | View Data Flows | [Consent Management -> Cookies](https://app.transcend.io/consent-manager/cookies/approved) |
|
|
2201
|
+
| `consentManager` | `consent-manager` | Consent Manager general settings, including domain list. | View Consent Manager | [Consent Management -> Developer Settings](https://app.transcend.io/consent-manager/developer-settings) |
|
|
2202
|
+
| `partitions` | `partitions` | The partitions in the account (often representative of separate data controllers). | View Consent Manager | [Consent Management -> Developer Settings -> Advanced Settings](https://app.transcend.io/consent-manager/developer-settings/advanced-settings) |
|
|
2203
|
+
| `prompts` | `prompts` | The Transcend AI prompts | View Prompts | [Prompt Manager -> Browse](https://app.transcend.io/prompts/browse) |
|
|
2204
|
+
| `promptPartials` | `prompt-partials` | The Transcend AI prompt partials | View Prompts | [Prompt Manager -> Partials](https://app.transcend.io/prompts/partials) |
|
|
2205
|
+
| `promptGroups` | `prompt-groups` | The Transcend AI prompt groups | View Prompts | [Prompt Manager -> Groups](https://app.transcend.io/prompts/groups) |
|
|
2206
|
+
| `agents` | `agents` | The agents in Pathfinder. | View Pathfinder | [Pathfinder -> Agents](https://app.transcend.io/pathfinder/agents) |
|
|
2207
|
+
| `agentFunctions` | `agent-functions` | The agent functions in Pathfinder. | View Pathfinder | [Pathfinder -> Agent Functions](https://app.transcend.io/pathfinder/agent-functions) |
|
|
2208
|
+
| `agentFiles` | `agent-files` | The agent files in Pathfinder. | View Pathfinder | [Pathfinder -> Agent Files](https://app.transcend.io/pathfinder/agent-files) |
|
|
2209
|
+
| `vendors` | `vendors` | The vendors in the Data Inventory. | View Data Inventory | [Data Inventory -> Vendors](https://app.transcend.io/data-map/data-inventory/vendors) |
|
|
2210
|
+
| `dataCategories` | `data-categories` | The data categories in the Data Inventory. | View Data Inventory | [Data Inventory -> Data Categories](https://app.transcend.io/data-map/data-inventory/data-categories) |
|
|
2211
|
+
| `processingPurposes` | `processing-purposes` | The processing purposes in the Data Inventory. | View Data Inventory | [Data Inventory -> Processing Purposes](https://app.transcend.io/data-map/data-inventory/purposes) |
|
|
2212
|
+
| `actionItems` | `action-items` | Onboarding-related action items | View All Action Items | [Action Items](https://app.transcend.io/action-items/all) |
|
|
2213
|
+
| `actionItemCollections` | `action-item-collections` | Onboarding-related action item group names | View All Action Items | [Action Items](https://app.transcend.io/action-items/all) |
|
|
2214
|
+
| `teams` | `teams` | Team definitions of users and scope groupings | View Scopes | [Administration -> Teams](https://app.transcend.io/admin/teams) |
|
|
2215
|
+
| `privacyCenters` | `privacy-center` | The Privacy Center settings. | View Privacy Center Layout | [Privacy Center](https://app.transcend.io/privacy-center/general-settings) |
|
|
2216
|
+
| `policies` | `policies` | The Privacy Center policies. | View Policies | [Privacy Center -> Policies](https://app.transcend.io/privacy-center/policies) |
|
|
2217
|
+
| `messages` | `messages` | Message definitions used across Consent Management, the Privacy Center, email templates and more. | View Internationalization Messages | [Privacy Center -> Messages & Internationalization](https://app.transcend.io/privacy-center/messages-internationalization)<br>[Consent Management -> Display Settings -> Messages](https://app.transcend.io/consent-manager/display-settings/messages) |
|
|
2218
|
+
| `assessments` | `assessments` | Assessment responses. | View Assessments | [Assessments -> Assessments](https://app.transcend.io/assessments/groups) |
|
|
2219
|
+
| `assessmentTemplates` | `assessment-templates` | Assessment template configurations. | View Assessments | [Assessment -> Templates](https://app.transcend.io/assessments/form-templates) |
|
|
2220
|
+
| `purposes` | `purposes` | Consent purposes and related preference management topics. | View Consent Manager, View Preference Store Settings | [Consent Management -> Regional Experiences -> Purposes](https://app.transcend.io/consent-manager/regional-experiences/purposes) |
|
|
2219
2221
|
|
|
2220
2222
|
#### Examples
|
|
2221
2223
|
|
|
@@ -2385,7 +2387,42 @@ FLAGS
|
|
|
2385
2387
|
|
|
2386
2388
|
#### Scopes
|
|
2387
2389
|
|
|
2388
|
-
The
|
|
2390
|
+
The API key permissions for this command vary based on the resources declared as top-level keys in your [`transcend.yml`](#transcendyml) file:
|
|
2391
|
+
|
|
2392
|
+
| Resource | Key in `transcend.yml` | Description | Scopes | Link |
|
|
2393
|
+
| ----------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
2394
|
+
| `apiKeys` | `api-keys` | API Key definitions assigned to Data Systems (formerly "Data Silos"). API keys cannot be created through the CLI, but you can map API key usage to Data Systems. | View API Keys | [Developer Tools -> API keys](https://app.transcend.io/infrastructure/api-keys) |
|
|
2395
|
+
| `customFields` | `attributes` | Custom Field definitions that define extra metadata for each table in the Admin Dashboard. | Manage Global Attributes | [Custom Fields](https://app.transcend.io/infrastructure/attributes) |
|
|
2396
|
+
| `templates` | `templates` | Email templates. Only template titles can be created and mapped to other resources. | Manage Email Templates | [DSR Automation -> Email Settings -> Templates](https://app.transcend.io/privacy-requests/email-settings/templates) |
|
|
2397
|
+
| `dataSilos` | `data-silos` | The Data System (formerly "Data Silo") definitions. | Manage Data Map, Connect Data Silos | [Data Inventory -> Data Systems](https://app.transcend.io/data-map/data-inventory/data-silos)<br>[Infrastructure -> Integrations](https://app.transcend.io/infrastructure/integrations) |
|
|
2398
|
+
| `enrichers` | `enrichers` | The Privacy Request enricher configurations. | Manage Request Identity Verification | [DSR Automation -> Identifiers](https://app.transcend.io/privacy-requests/identifiers) |
|
|
2399
|
+
| `dataFlows` | `data-flows` | Consent Manager Data Flow definitions. | Manage Data Flows | [Consent Management -> Data Flows](https://app.transcend.io/consent-manager/data-flows/approved) |
|
|
2400
|
+
| `businessEntities` | `business-entities` | The business entities in the Data Inventory. | Manage Data Inventory | [Data Inventory -> Business Entities](https://app.transcend.io/data-map/data-inventory/business-entities) |
|
|
2401
|
+
| `processingActivities` | `processing-activities` | The processing activities in the Data Inventory. | Manage Data Map | [Data Inventory -> Processing Activities](https://app.transcend.io/data-map/data-inventory/processing-activities) |
|
|
2402
|
+
| `actions` | `actions` | The privacy request action settings. | Manage Data Subject Request Settings | [DSR Automation -> Request Settings -> Data Actions](https://app.transcend.io/privacy-requests/settings/data-actions) |
|
|
2403
|
+
| `dataSubjects` | `data-subjects` | The privacy request data subject settings. | Manage Data Subject Request Settings | [DSR Automation -> Request Settings -> Data Subjects](https://app.transcend.io/privacy-requests/settings/data-subjects) |
|
|
2404
|
+
| `identifiers` | `identifiers` | The privacy request identifier configurations. | Manage Request Identity Verification | [DSR Automation -> Identifiers](https://app.transcend.io/privacy-requests/identifiers) |
|
|
2405
|
+
| `cookies` | `cookies` | Consent Manager Cookie definitions. | Manage Data Flows | [Consent Management -> Cookies](https://app.transcend.io/consent-manager/cookies/approved) |
|
|
2406
|
+
| `consentManager` | `consent-manager` | Consent Manager general settings, including domain list. | Manage Consent Manager Developer Settings | [Consent Management -> Developer Settings](https://app.transcend.io/consent-manager/developer-settings) |
|
|
2407
|
+
| `partitions` | `partitions` | The partitions in the account (often representative of separate data controllers). | Manage Consent Manager Developer Settings | [Consent Management -> Developer Settings -> Advanced Settings](https://app.transcend.io/consent-manager/developer-settings/advanced-settings) |
|
|
2408
|
+
| `prompts` | `prompts` | The Transcend AI prompts | Manage Prompts | [Prompt Manager -> Browse](https://app.transcend.io/prompts/browse) |
|
|
2409
|
+
| `promptPartials` | `prompt-partials` | The Transcend AI prompt partials | Manage Prompts | [Prompt Manager -> Partials](https://app.transcend.io/prompts/partials) |
|
|
2410
|
+
| `promptGroups` | `prompt-groups` | The Transcend AI prompt groups | Manage Prompts | [Prompt Manager -> Groups](https://app.transcend.io/prompts/groups) |
|
|
2411
|
+
| `agents` | `agents` | The agents in Pathfinder. | Manage Pathfinder | [Pathfinder -> Agents](https://app.transcend.io/pathfinder/agents) |
|
|
2412
|
+
| `agentFunctions` | `agent-functions` | The agent functions in Pathfinder. | Manage Pathfinder | [Pathfinder -> Agent Functions](https://app.transcend.io/pathfinder/agent-functions) |
|
|
2413
|
+
| `agentFiles` | `agent-files` | The agent files in Pathfinder. | Manage Pathfinder | [Pathfinder -> Agent Files](https://app.transcend.io/pathfinder/agent-files) |
|
|
2414
|
+
| `vendors` | `vendors` | The vendors in the Data Inventory. | Manage Data Inventory | [Data Inventory -> Vendors](https://app.transcend.io/data-map/data-inventory/vendors) |
|
|
2415
|
+
| `dataCategories` | `data-categories` | The data categories in the Data Inventory. | Manage Data Inventory | [Data Inventory -> Data Categories](https://app.transcend.io/data-map/data-inventory/data-categories) |
|
|
2416
|
+
| `processingPurposes` | `processing-purposes` | The processing purposes in the Data Inventory. | Manage Data Inventory | [Data Inventory -> Processing Purposes](https://app.transcend.io/data-map/data-inventory/purposes) |
|
|
2417
|
+
| `actionItems` | `action-items` | Onboarding-related action items | Manage All Action Items, View Global Attributes | [Action Items](https://app.transcend.io/action-items/all) |
|
|
2418
|
+
| `actionItemCollections` | `action-item-collections` | Onboarding-related action item group names | Manage Action Item Collections | [Action Items](https://app.transcend.io/action-items/all) |
|
|
2419
|
+
| `teams` | `teams` | Team definitions of users and scope groupings | Manage Access Controls | [Administration -> Teams](https://app.transcend.io/admin/teams) |
|
|
2420
|
+
| `privacyCenters` | `privacy-center` | The Privacy Center settings. | Manage Privacy Center Layout | [Privacy Center](https://app.transcend.io/privacy-center/general-settings) |
|
|
2421
|
+
| `policies` | `policies` | The Privacy Center policies. | Manage Policies | [Privacy Center -> Policies](https://app.transcend.io/privacy-center/policies) |
|
|
2422
|
+
| `messages` | `messages` | Message definitions used across Consent Management, the Privacy Center, email templates and more. | Manage Internationalization Messages | [Privacy Center -> Messages & Internationalization](https://app.transcend.io/privacy-center/messages-internationalization)<br>[Consent Management -> Display Settings -> Messages](https://app.transcend.io/consent-manager/display-settings/messages) |
|
|
2423
|
+
| `assessments` | `assessments` | Assessment responses. | Manage Assessments | [Assessments -> Assessments](https://app.transcend.io/assessments/groups) |
|
|
2424
|
+
| `assessmentTemplates` | `assessment-templates` | Assessment template configurations. | Manage Assessments | [Assessment -> Templates](https://app.transcend.io/assessments/form-templates) |
|
|
2425
|
+
| `purposes` | `purposes` | Consent purposes and related preference management topics. | Manage Consent Manager, Manage Preference Store Settings | [Consent Management -> Regional Experiences -> Purposes](https://app.transcend.io/consent-manager/regional-experiences/purposes) |
|
|
2389
2426
|
|
|
2390
2427
|
#### Examples
|
|
2391
2428
|
|
|
@@ -3090,6 +3127,77 @@ query {
|
|
|
3090
3127
|
}
|
|
3091
3128
|
```
|
|
3092
3129
|
|
|
3130
|
+
### `transcend admin chunk-csv`
|
|
3131
|
+
|
|
3132
|
+
```txt
|
|
3133
|
+
USAGE
|
|
3134
|
+
transcend admin chunk-csv (--directory value) [--outputDir value] [--clearOutputDir] [--chunkSizeMB value] [--concurrency value] [--viewerMode]
|
|
3135
|
+
transcend admin chunk-csv --help
|
|
3136
|
+
|
|
3137
|
+
Streams every CSV in --directory and writes chunked files of approximately N MB each.
|
|
3138
|
+
- Runs files in parallel across worker processes (configurable via --concurrency).
|
|
3139
|
+
- Validates row-length consistency against the header row; logs periodic progress and memory usage.
|
|
3140
|
+
|
|
3141
|
+
FLAGS
|
|
3142
|
+
--directory Directory containing CSV files to split (required)
|
|
3143
|
+
[--outputDir] Directory to write chunk files (defaults to each input file's directory)
|
|
3144
|
+
[--clearOutputDir/--noClearOutputDir] Clear the output directory before writing chunks [default = true]
|
|
3145
|
+
[--chunkSizeMB] Approximate chunk size in megabytes. Keep well under JS string size limits [default = 10]
|
|
3146
|
+
[--concurrency] Max number of worker processes (defaults based on CPU and file count)
|
|
3147
|
+
[--viewerMode] Run in non-interactive viewer mode (no attach UI, auto-artifacts) [default = false]
|
|
3148
|
+
-h --help Print help information and exit
|
|
3149
|
+
```
|
|
3150
|
+
|
|
3151
|
+
#### Examples
|
|
3152
|
+
|
|
3153
|
+
**Chunk a file into smaller CSV files**
|
|
3154
|
+
|
|
3155
|
+
```sh
|
|
3156
|
+
transcend admin chunk-csv --directory=./working/files --outputDir=./working/chunks
|
|
3157
|
+
```
|
|
3158
|
+
|
|
3159
|
+
**Specify chunk size in MB**
|
|
3160
|
+
|
|
3161
|
+
```sh
|
|
3162
|
+
transcend admin chunk-csv --directory=./working/files --outputDir=./working/chunks --chunkSizeMB=250
|
|
3163
|
+
```
|
|
3164
|
+
|
|
3165
|
+
**Specify concurrency (pool size)**
|
|
3166
|
+
|
|
3167
|
+
```sh
|
|
3168
|
+
transcend admin chunk-csv --directory=./working/files --outputDir=./working/chunks --concurrency=4
|
|
3169
|
+
```
|
|
3170
|
+
|
|
3171
|
+
**Viewer mode - no ability to switch between files**
|
|
3172
|
+
|
|
3173
|
+
```sh
|
|
3174
|
+
transcend admin chunk-csv --directory=./working/files --outputDir=./working/chunks --viewerMode
|
|
3175
|
+
```
|
|
3176
|
+
|
|
3177
|
+
**Clear output directory before writing chunks**
|
|
3178
|
+
|
|
3179
|
+
```sh
|
|
3180
|
+
transcend admin chunk-csv --directory=./working/files --outputDir=./working/chunks --clearOutputDir
|
|
3181
|
+
```
|
|
3182
|
+
|
|
3183
|
+
**Run with all options**
|
|
3184
|
+
|
|
3185
|
+
```sh
|
|
3186
|
+
transcend admin chunk-csv \
|
|
3187
|
+
--directory=./working/files \
|
|
3188
|
+
--outputDir=./working/chunks \
|
|
3189
|
+
--chunkSizeMB=100 \
|
|
3190
|
+
--concurrency=2 \
|
|
3191
|
+
--viewerMode=false \
|
|
3192
|
+
--clearOutputDir
|
|
3193
|
+
```
|
|
3194
|
+
|
|
3195
|
+
**Run with no output directory specified (defaults to input directory)**
|
|
3196
|
+
|
|
3197
|
+
```sh
|
|
3198
|
+
transcend admin chunk-csv --directory=./working/files
|
|
3199
|
+
```
|
|
3200
|
+
|
|
3093
3201
|
### `transcend migration sync-ot`
|
|
3094
3202
|
|
|
3095
3203
|
```txt
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var
|
|
2
|
+
"use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var _chunkMRXBJEKLcjs = require('../chunk-MRXBJEKL.cjs');require('../chunk-6CS4GCJ4.cjs');require('../chunk-MGAJ7ILD.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');async function e(){let o=process.argv.slice(3);_optionalChain([process, 'access', _ => _.env, 'access', _2 => _2.COMP_LINE, 'optionalAccess', _3 => _3.endsWith, 'call', _4 => _4(" ")])&&o.push(""),await _core.proposeCompletions.call(void 0, _chunkMRXBJEKLcjs.a,o,_chunkT462ONFXcjs.a.call(void 0, process));try{for(let{completion:r}of await _core.proposeCompletions.call(void 0, _chunkMRXBJEKLcjs.a,o,_chunkT462ONFXcjs.a.call(void 0, process)))process.stdout.write(`${r}
|
|
3
3
|
`)}catch (e2){}}e();
|
|
4
4
|
//# sourceMappingURL=bash-complete.cjs.map
|
package/dist/bin/cli.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var
|
|
2
|
+
"use strict";var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var _chunkMRXBJEKLcjs = require('../chunk-MRXBJEKL.cjs');require('../chunk-6CS4GCJ4.cjs');require('../chunk-MGAJ7ILD.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');async function n(){await _core.run.call(void 0, _chunkMRXBJEKLcjs.a,process.argv.slice(2),_chunkT462ONFXcjs.a.call(void 0, process))}n();
|
|
3
3
|
//# sourceMappingURL=cli.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
2
|
+
"use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkMRXBJEKLcjs = require('../chunk-MRXBJEKL.cjs');require('../chunk-6CS4GCJ4.cjs');var _chunkZUNVPK23cjs = require('../chunk-ZUNVPK23.cjs');require('../chunk-MGAJ7ILD.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');var o={"tr-build-xdi-sync-endpoint":["consent","build-xdi-sync-endpoint"],"tr-consent-manager-service-json-to-yml":["inventory","consent-manager-service-json-to-yml"],"tr-consent-managers-to-business-entities":["inventory","consent-managers-to-business-entities"],"tr-cron-mark-identifiers-completed":["request","cron","mark-identifiers-completed"],"tr-cron-pull-identifiers":["request","cron","pull-identifiers"],"tr-derive-data-silos-from-data-flows":["inventory","derive-data-silos-from-data-flows"],"tr-derive-data-silos-from-data-flows-cross-instance":["inventory","derive-data-silos-from-data-flows-cross-instance"],"tr-discover-silos":["inventory","discover-silos"],"tr-generate-api-keys":["admin","generate-api-keys"],"tr-manual-enrichment-pull-identifiers":["request","preflight","pull-identifiers"],"tr-manual-enrichment-push-identifiers":["request","preflight","push-identifiers"],"tr-mark-request-data-silos-completed":["request","system","mark-request-data-silos-completed"],"tr-pull":["inventory","pull"],"tr-pull-consent-metrics":["consent","pull-consent-metrics"],"tr-pull-consent-preferences":["consent","pull-consent-preferences"],"tr-pull-datapoints":["inventory","pull-datapoints"],"tr-pull-pull-unstructured-discovery-files":["inventory","pull-unstructured-discovery-files"],"tr-push":["inventory","push"],"tr-request-approve":["request","approve"],"tr-request-cancel":["request","cancel"],"tr-request-download-files":["request","download-files"],"tr-request-enricher-restart":["request","enricher-restart"],"tr-request-export":["request","export"],"tr-request-mark-silent":["request","mark-silent"],"tr-request-notify-additional-time":["request","notify-additional-time"],"tr-request-reject-unverified-identifiers":["request","reject-unverified-identifiers"],"tr-request-restart":["request","restart"],"tr-request-upload":["request","upload"],"tr-retry-request-data-silos":["request","system","retry-request-data-silos"],"tr-scan-packages":["inventory","scan-packages"],"tr-skip-preflight-jobs":["request","skip-preflight-jobs"],"tr-skip-request-data-silos":["request","system","skip-request-data-silos"],"tr-sync-ot":["migration","sync-ot"],"tr-update-consent-manager":["consent","update-consent-manager"],"tr-upload-consent-preferences":["consent","upload-consent-preferences"],"tr-upload-cookies-from-csv":["consent","upload-cookies-from-csv"],"tr-upload-data-flows-from-csv":["consent","upload-data-flows-from-csv"],"tr-upload-preferences":["consent","upload-preferences"]};function p(t){return _optionalChain([_core.generateHelpTextForAllCommands.call(void 0, _chunkMRXBJEKLcjs.a), 'access', _ => _.find, 'call', _2 => _2(s=>s[0]===`${_chunkMRXBJEKLcjs.a.config.name} ${t.join(" ")}`), 'optionalAccess', _3 => _3[1]])}function i(t){_chunkZUNVPK23cjs.a.log("[DEPRECATION NOTICE]");let e=o[t];if(!e){let a=Object.entries(o).map(([l,d])=>`\`${l}\` -> \`${_chunkMRXBJEKLcjs.a.config.name} ${d.join(" ")}\``).join(`
|
|
3
3
|
`);_chunkZUNVPK23cjs.a.log(`This command is deprecated as of v7.0.0. Here is a list of new commands, mapped to their legacy command names:
|
|
4
4
|
${a}`);return}_chunkZUNVPK23cjs.a.log(`\`${t}\` is deprecated as of v7.0.0.
|
|
5
|
-
Use \`${
|
|
5
|
+
Use \`${_chunkMRXBJEKLcjs.a.config.name} ${e.join(" ")}\` instead.
|
|
6
6
|
`);let s=p(e);if(!s)throw new Error(`Failed to get help text for command: \`${e.join(" ")}\``);_chunkZUNVPK23cjs.a.log(s)}function m(){let e=_optionalChain([process, 'access', _4 => _4.argv, 'access', _5 => _5.at, 'call', _6 => _6(-1), 'optionalAccess', _7 => _7.split, 'call', _8 => _8("/"), 'access', _9 => _9.pop, 'call', _10 => _10(), 'optionalAccess', _11 => _11.trim, 'call', _12 => _12()]);if(e)i(e);else throw new Error("Deprecated command");process.exit(1)}m();
|
|
7
7
|
//# sourceMappingURL=deprecated-command.cjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkMGAJ7ILDcjs = require('./chunk-MGAJ7ILD.cjs');var _chunkQ7I37FJVcjs = require('./chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');var _privacytypes = require('@transcend-io/privacy-types');function h(e){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e))throw new Error(`Invalid UUID format: ${e}`);return e}function a(e){try{return new URL(e).toString().replace(/\/$/,"")}catch (e2){throw new Error(`Invalid URL format: ${e}`)}}function b(e){return e.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function T(e){let r=new Date(e);if(Number.isNaN(r.getTime()))throw new TypeError(`Invalid date: ${e}. Try using the ISO 8601 format (YYYY-MM-DDTHH:MM:SS.SSSZ)`);return r}var l=({scopes:e,requiresSiloScope:r=!1})=>{let t={kind:"parsed",parse:String,brief:"The Transcend API key."};return r&&(t.brief+=" This key must be associated with the data silo(s) being operated on."),e==="Varies"?{...t,brief:`${t.brief} The scopes required will vary depending on the operation performed. If in doubt, the ${_privacytypes.TRANSCEND_SCOPES[_privacytypes.ScopeName.FullAdmin].title} scope will always work.`}:e.length===0?{...t,brief:`${t.brief} No scopes are required for this command.`}:{...t,brief:`${t.brief} Requires scopes: ${e.map(p=>`"${_privacytypes.TRANSCEND_SCOPES[p].title}"`).join(", ")}`}},d= exports.e =(e=_chunkMGAJ7ILDcjs.r)=>({kind:"parsed",parse:a,brief:"URL of the Transcend backend. Use https://api.us.transcend.io for US hosting",default:e}),A= exports.f =(e=_chunkMGAJ7ILDcjs.s)=>({kind:"parsed",parse:a,brief:"URL of the Transcend consent backend. Use https://consent.us.transcend.io for US hosting",default:e}),U= exports.g =()=>({kind:"parsed",parse:String,brief:"The Sombra internal key, use for additional authentication when self-hosting Sombra",optional:!0});var g=["dataSilos","enrichers","templates","apiKeys"],N= exports.i =Object.values(_privacytypes.ConsentTrackerStatus),L= exports.j =_core.buildCommand.call(void 0, {loader:async()=>{let{pull:e}=await Promise.resolve().then(() => _interopRequireWildcard(require("./impl-WVAGHUZI.cjs")));return e},parameters:{flags:{auth:l({scopes:"Varies"}),resources:{kind:"enum",values:["all",...Object.values(_chunkQ7I37FJVcjs.d)],brief:`The different resource types to pull in. Defaults to ${g.join(",")}.`,variadic:",",optional:!0},file:{kind:"parsed",parse:String,brief:"Path to the YAML file to pull into",default:"./transcend.yml"},transcendUrl:d(),dataSiloIds:{kind:"parsed",parse:String,variadic:",",brief:"The UUIDs of the data silos that should be pulled into the YAML file",optional:!0},integrationNames:{kind:"parsed",parse:String,variadic:",",brief:"The types of integrations to pull down",optional:!0},trackerStatuses:{kind:"enum",values:Object.values(_privacytypes.ConsentTrackerStatus),variadic:",",brief:"The statuses of consent manager trackers to pull down. Defaults to all statuses.",optional:!0},pageSize:{kind:"parsed",parse:_core.numberParser,brief:"The page size to use when paginating over the API",default:"50"},skipDatapoints:{kind:"boolean",brief:"When true, skip pulling in datapoints alongside data silo resource",default:!1},skipSubDatapoints:{kind:"boolean",brief:"When true, skip pulling in subDatapoints alongside data silo resource",default:!1},includeGuessedCategories:{kind:"boolean",brief:"When true, included guessed data categories that came from the content classifier",default:!1},debug:{kind:"boolean",brief:"Set to true to include debug logs while pulling the configuration",default:!1}}},docs:{brief:"Pull metadata from Transcend into transcend.yml",fullDescription:`Generates a transcend.yml by pulling the configuration from your Transcend instance.
|
|
2
2
|
|
|
3
3
|
The API key needs various scopes depending on the resources being pulled (see the CLI's README for more details).
|
|
4
4
|
|
|
@@ -6,4 +6,4 @@ This command can be helpful if you are looking to:
|
|
|
6
6
|
|
|
7
7
|
- Copy your data into another instance
|
|
8
8
|
- Generate a transcend.yml file as a starting point to maintain parts of your data inventory in code.`}});exports.a = h; exports.b = b; exports.c = T; exports.d = l; exports.e = d; exports.f = A; exports.g = U; exports.h = g; exports.i = N; exports.j = L;
|
|
9
|
-
//# sourceMappingURL=chunk-
|
|
9
|
+
//# sourceMappingURL=chunk-6CS4GCJ4.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-6CS4GCJ4.cjs","../src/commands/inventory/pull/command.ts","../src/lib/cli/parsers.ts"],"names":["uuidParser","input"],"mappings":"AAAA,mZAA+C,wDAAyC,qCCA7C,2DACN,SCMrBA,CAAAA,CAAWC,CAAAA,CAAuB,CAGhD,EAAA,CAAI,CADF,4EAAA,CACa,IAAA,CAAKA,CAAK,CAAA,CACvB,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwBA,CAAK,CAAA,CAAA;AD0F5B;AAAA;AAAA;AAAA;AAAA;AAAA;AASpB,qGAAA","file":"/home/runner/work/cli/cli/dist/chunk-6CS4GCJ4.cjs","sourcesContent":[null,"import { buildCommand, numberParser } from '@stricli/core';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport {\n createAuthParameter,\n createTranscendUrlParameter,\n} from '../../../lib/cli/common-parameters';\nimport { TranscendPullResource } from '../../../enums';\n\nexport const DEFAULT_TRANSCEND_PULL_RESOURCES = [\n TranscendPullResource.DataSilos,\n TranscendPullResource.Enrichers,\n TranscendPullResource.Templates,\n TranscendPullResource.ApiKeys,\n];\n\nexport const DEFAULT_CONSENT_TRACKER_STATUSES =\n Object.values(ConsentTrackerStatus);\n\nexport const pullCommand = buildCommand({\n loader: async () => {\n const { pull } = await import('./impl');\n return pull;\n },\n parameters: {\n flags: {\n auth: createAuthParameter({\n scopes: 'Varies',\n }),\n resources: {\n kind: 'enum',\n values: ['all', ...Object.values(TranscendPullResource)],\n brief: `The different resource types to pull in. Defaults to ${DEFAULT_TRANSCEND_PULL_RESOURCES.join(\n ',',\n )}.`,\n variadic: ',',\n optional: true,\n },\n file: {\n kind: 'parsed',\n parse: String,\n brief: 'Path to the YAML file to pull into',\n default: './transcend.yml',\n },\n transcendUrl: createTranscendUrlParameter(),\n dataSiloIds: {\n kind: 'parsed',\n parse: String,\n variadic: ',',\n brief:\n 'The UUIDs of the data silos that should be pulled into the YAML file',\n optional: true,\n },\n integrationNames: {\n kind: 'parsed',\n parse: String,\n variadic: ',',\n brief: 'The types of integrations to pull down',\n optional: true,\n },\n trackerStatuses: {\n kind: 'enum',\n values: Object.values(ConsentTrackerStatus),\n variadic: ',',\n brief:\n 'The statuses of consent manager trackers to pull down. Defaults to all statuses.',\n optional: true,\n },\n pageSize: {\n kind: 'parsed',\n parse: numberParser,\n brief: 'The page size to use when paginating over the API',\n default: '50',\n },\n skipDatapoints: {\n kind: 'boolean',\n brief:\n 'When true, skip pulling in datapoints alongside data silo resource',\n default: false,\n },\n skipSubDatapoints: {\n kind: 'boolean',\n brief:\n 'When true, skip pulling in subDatapoints alongside data silo resource',\n default: false,\n },\n includeGuessedCategories: {\n kind: 'boolean',\n brief:\n 'When true, included guessed data categories that came from the content classifier',\n default: false,\n },\n debug: {\n kind: 'boolean',\n brief:\n 'Set to true to include debug logs while pulling the configuration',\n default: false,\n },\n },\n },\n docs: {\n brief: 'Pull metadata from Transcend into transcend.yml',\n fullDescription: `Generates a transcend.yml by pulling the configuration from your Transcend instance.\n\nThe API key needs various scopes depending on the resources being pulled (see the CLI's README for more details).\n\nThis command can be helpful if you are looking to:\n\n- Copy your data into another instance\n- Generate a transcend.yml file as a starting point to maintain parts of your data inventory in code.`,\n },\n});\n","/**\n * Validates and returns a UUID string.\n *\n * @param input - The input string to validate as UUID\n * @returns The validated UUID string\n * @throws Error if input is not a valid UUID\n */\nexport function uuidParser(input: string): string {\n const uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n if (!uuidRegex.test(input)) {\n throw new Error(`Invalid UUID format: ${input}`);\n }\n return input;\n}\n\n/**\n * Validates and returns a URL string.\n *\n * @param input - The input string to validate as URL\n * @returns The validated URL string\n * @throws Error if input is not a valid URL\n */\nexport function urlParser(input: string): string {\n try {\n const url = new URL(input);\n return url.toString().replace(/\\/$/, '');\n } catch {\n throw new Error(`Invalid URL format: ${input}`);\n }\n}\n\n/**\n * Parse a comma-separated string to array.\n * NOTE: Prefer using `variadic` for list arguments instead of this function. This should only be used for arguments which have a default value.\n *\n * @param input - The comma-separated string to parse\n * @returns Array of trimmed, non-empty strings\n */\nexport function arrayParser(input: string): string[] {\n return input\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n}\n\n/**\n * Parse a date string to a Date object.\n *\n * @param input - The date string to parse\n * @returns The parsed Date object\n * @throws TypeError if input is not a valid date\n */\nexport function dateParser(input: string): Date {\n const date = new Date(input);\n if (Number.isNaN(date.getTime())) {\n throw new TypeError(\n `Invalid date: ${input}. Try using the ISO 8601 format (YYYY-MM-DDTHH:MM:SS.SSSZ)`,\n );\n }\n return date;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkIFAKI5FFcjs = require('./chunk-IFAKI5FF.cjs');var _chunkQEM6S2W7cjs = require('./chunk-QEM6S2W7.cjs');var _chunkQPIUQDJ6cjs = require('./chunk-QPIUQDJ6.cjs');var _chunkZUNVPK23cjs = require('./chunk-ZUNVPK23.cjs');var _chunkMGAJ7ILDcjs = require('./chunk-MGAJ7ILD.cjs');var _privacytypes = require('@transcend-io/privacy-types');var _bluebird = require('bluebird');var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors);async function at({auth:e,deploy:i=!1,transcendUrl:o=_chunkMGAJ7ILDcjs.r,bundleTypes:t=Object.values(_privacytypes.ConsentBundleType)}){let r=_chunkQPIUQDJ6cjs.vc.call(void 0, o,e),n=await _chunkQPIUQDJ6cjs.Oc.call(void 0, r);await _bluebird.mapSeries.call(void 0, t,async a=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Update Consent Manager bundle with ID "${n}" and type "${a}" to latest version...`)),await _chunkQPIUQDJ6cjs.zc.call(void 0, r,{id:n,bundleType:a}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Updated Consent Manager bundle with ID "${n}" and type "${a}" to latest version!`))}),i&&await _bluebird.mapSeries.call(void 0, t,async a=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Deploying Consent Manager bundle with ID "${n}" and type "${a}"...`)),await _chunkQPIUQDJ6cjs.yc.call(void 0, r,{id:n,bundleType:a}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Deployed Consent Manager bundle with ID "${n}" and type "${a}"!`))})}var K=["ID","Activity","Encounters","Last Seen At","Has Native Do Not Sell/Share Support","IAB USP API Support","Service Description","Website URL","Categories of Recipients"];async function Ct({auth:e,trackerStatus:i,file:o,classifyService:t=!1,transcendUrl:r=_chunkMGAJ7ILDcjs.r}){let n=_chunkQPIUQDJ6cjs.vc.call(void 0, r,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let l=_chunkQPIUQDJ6cjs.qc.call(void 0, o,_chunkQEM6S2W7cjs.ia).map(({Type:d,Notes:m,Service:f,Purpose:E,Status:g,Owners:I,Teams:T,"Connections Made To":v,...y})=>({value:v,type:d,description:m,trackingPurposes:_chunkQPIUQDJ6cjs.nc.call(void 0, E),status:g||i,owners:I?_chunkQPIUQDJ6cjs.nc.call(void 0, I):void 0,teams:T?_chunkQPIUQDJ6cjs.nc.call(void 0, T):void 0,attributes:Object.entries(y).filter(([h])=>!K.includes(h)).map(([h,B])=>({key:h,values:_chunkQPIUQDJ6cjs.nc.call(void 0, B)}))}));await _chunkQPIUQDJ6cjs.Qe.call(void 0, n,l,t)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing data flows from CSV, see logs above for more info. ")),process.exit(1))}var j=["ID","Activity","Encounters","Last Seen At","Has Native Do Not Sell/Share Support","IAB USP API Support","Service Description","Website URL","Categories of Recipients"];async function vt({auth:e,trackerStatus:i,file:o,transcendUrl:t=_chunkMGAJ7ILDcjs.r}){let r=_chunkQPIUQDJ6cjs.vc.call(void 0, t,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let a=_chunkQPIUQDJ6cjs.qc.call(void 0, o,_chunkQEM6S2W7cjs.ja).map(({"Is Regex?":s,Notes:d,Service:m,Purpose:f,Status:E,Owners:g,Teams:I,Name:T,...v})=>({...typeof s=="string"?{isRegex:s.toLowerCase()==="true"}:{},name:T,description:d,trackingPurposes:_chunkQPIUQDJ6cjs.nc.call(void 0, f),status:E||i,owners:g?_chunkQPIUQDJ6cjs.nc.call(void 0, g):void 0,teams:I?_chunkQPIUQDJ6cjs.nc.call(void 0, I):void 0,attributes:Object.entries(v).filter(([y])=>!j.includes(y)).map(([y,h])=>({key:y,values:_chunkQPIUQDJ6cjs.nc.call(void 0, h)}))}));await _chunkQPIUQDJ6cjs.Ke.call(void 0, r,a)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing cookies from CSV, see logs above for more info. ")),process.exit(1))}var Y=1e3,Q=60*Y,V=60*Q,X=24*V,z=7*X;async function Lt(e,{bin:i,start:o,end:t=new Date}){let r=await _chunkQPIUQDJ6cjs.Oc.call(void 0, e),n=Math.floor(o.getTime()/1e3),a=Math.floor(t.getTime()/1e3);if(n>a)throw new Error('Received "end" date that happened before "start" date');if(i==="1h"&&t.getTime()-o.getTime()>z*2)throw new Error("When using bin=1h, start and end time can be no more than 2 weeks apart");let l=o.toISOString(),s=t.toISOString(),[d,m,f]=await Promise.all([_chunkQPIUQDJ6cjs.Rc.call(void 0, e,{dataSource:"PRIVACY_SIGNAL_TIMESERIES",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1}),_chunkQPIUQDJ6cjs.Rc.call(void 0, e,{dataSource:"CONSENT_CHANGES_TIMESERIES",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1}),_chunkQPIUQDJ6cjs.Rc.call(void 0, e,{dataSource:"CONSENT_SESSIONS_BY_REGIME",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1})]);return{PRIVACY_SIGNAL_TIMESERIES:d,CONSENT_CHANGES_TIMESERIES:m,CONSENT_SESSIONS_BY_REGIME:f}}var $=e=>new URL(`https://${e}`).hostname.split(".").slice(-2).join(".");var J=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;async function Ht(e,{xdiLocation:i,transcendUrl:o=_chunkMGAJ7ILDcjs.r,removeIpAddresses:t=!0,domainBlockList:r=["localhost"],xdiAllowedCommands:n="ConsentManager:Sync"}){let a=Array.isArray(e)?e:[{apiKey:e,organizationId:"",organizationName:""}],l=await _bluebird.map.call(void 0, a,async m=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Pulling consent metadata for organization - ${m.organizationName}`));let f=_chunkQPIUQDJ6cjs.vc.call(void 0, o,m.apiKey);return await _chunkQPIUQDJ6cjs.Nc.call(void 0, f)},{concurrency:5}),s={};return l.forEach(m=>{let f=_optionalChain([m, 'access', _2 => _2.partition, 'optionalAccess', _3 => _3.partition])||m.bundleURL.split("/").reverse()[1];s[f]||(s[f]=[]);let E=_chunkMGAJ7ILDcjs.c.call(void 0, m.configuration.domains.filter(g=>!t||!J.test(g)).map(g=>$(g)),r);s[f]=[...new Set([...s[f]||[],...E])]}),{html:`
|
|
2
2
|
<!DOCTYPE html>
|
|
3
3
|
<script
|
|
4
4
|
src="${i}"
|
|
@@ -8,5 +8,5 @@ data-xdi-commands="${n}"
|
|
|
8
8
|
`,syncGroups:s}}function Yt(e){let i=e.map(({name:o,input:t})=>({title:o.replace(".yml",""),attributes:[..._optionalChain([t, 'optionalAccess', _4 => _4.domains])?[{key:"Transcend Domain List",values:[...new Set(t.domains)]}]:[],..._optionalChain([t, 'optionalAccess', _5 => _5.bundleUrls])?[{key:"Airgap Production URL",values:[t.bundleUrls.PRODUCTION]},{key:"Airgap Test URL",values:[t.bundleUrls.TEST]},{key:"Airgap XDI URL",values:[t.bundleUrls.PRODUCTION.replace("airgap.js","xdi.js")]}]:[],..._optionalChain([t, 'optionalAccess', _6 => _6.partition])?[{key:"Consent Partition Key",values:[t.partition]}]:[]]}));return _chunkZUNVPK23cjs.a.info(`
|
|
9
9
|
|
|
10
10
|
~~~~~~~~~~~
|
|
11
|
-
Airgap scripts to host:`),i.forEach(({attributes:o,title:t},r)=>{_optionalChain([o, 'optionalAccess', _7 => _7.find, 'call', _8 => _8(n=>n.key==="Airgap Production URL"), 'optionalAccess', _9 => _9.values, 'optionalAccess', _10 => _10.forEach, 'call', _11 => _11(n=>{_chunkZUNVPK23cjs.a.info(`${r}) ${t} - ${n}`)})])}),i}var _iots = require('io-ts'); var p = _interopRequireWildcard(_iots);var _typeutils = require('@transcend-io/type-utils');var tt=p.intersection([p.type({nodes:p.array(
|
|
12
|
-
//# sourceMappingURL=chunk-
|
|
11
|
+
Airgap scripts to host:`),i.forEach(({attributes:o,title:t},r)=>{_optionalChain([o, 'optionalAccess', _7 => _7.find, 'call', _8 => _8(n=>n.key==="Airgap Production URL"), 'optionalAccess', _9 => _9.values, 'optionalAccess', _10 => _10.forEach, 'call', _11 => _11(n=>{_chunkZUNVPK23cjs.a.info(`${r}) ${t} - ${n}`)})])}),i}var _iots = require('io-ts'); var p = _interopRequireWildcard(_iots);var _typeutils = require('@transcend-io/type-utils');var tt=p.intersection([p.type({nodes:p.array(_chunkIFAKI5FFcjs.c)}),p.partial({lastKey:p.partial({userId:p.string,partition:p.string,timestamp:p.string})})]);async function zt(e,{partition:i,filterBy:o={},limit:t=50}){let r,n=[],a=!0;for(;a;){let l=await e.post("v1/consent-preferences",{json:{partition:i,...o,startKey:r||void 0,limit:t}}).json(),{nodes:s,lastKey:d}=_typeutils.decodeCodec.call(void 0, tt,l);if(!s||s.length===0)break;n.push(...s),r=d,a=!!d&&Object.keys(d).length>0}return n}exports.a = at; exports.b = Ct; exports.c = vt; exports.d = Lt; exports.e = $; exports.f = J; exports.g = Ht; exports.h = Yt; exports.i = tt; exports.j = zt;
|
|
12
|
+
//# sourceMappingURL=chunk-BICC2LJL.cjs.map
|