ingestron 0.17.8 → 1.0.0
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/NOTICE +3 -5
- package/README.md +26 -74
- package/THIRD_PARTY_NOTICES +148 -0
- package/dist/main.js +29188 -0
- package/package.json +32 -65
- package/project-recipes/adf/connections/adls-gen2.yaml +7 -0
- package/project-recipes/adf/connections/amazon-rds-oracle.yaml +9 -0
- package/project-recipes/adf/connections/amazon-rds-sqlserver.yaml +9 -0
- package/project-recipes/adf/connections/amazon-redshift.yaml +10 -0
- package/project-recipes/adf/connections/amazon-s3.yaml +8 -0
- package/project-recipes/adf/connections/azure-blob.yaml +7 -0
- package/project-recipes/adf/connections/azure-cosmos-db-mongodb.yaml +8 -0
- package/project-recipes/adf/connections/azure-cosmos-db-nosql.yaml +8 -0
- package/project-recipes/adf/connections/azure-cosmos-postgresql.yaml +10 -0
- package/project-recipes/adf/connections/azure-data-explorer.yaml +8 -0
- package/project-recipes/adf/connections/azure-databricks-delta.yaml +9 -0
- package/project-recipes/adf/connections/azure-files.yaml +8 -0
- package/project-recipes/adf/connections/azure-mysql.yaml +7 -0
- package/project-recipes/adf/connections/azure-postgresql.yaml +10 -0
- package/project-recipes/adf/connections/azure-sql-database.yaml +9 -0
- package/project-recipes/adf/connections/azure-sql-managed-instance.yaml +9 -0
- package/project-recipes/adf/connections/azure-synapse.yaml +9 -0
- package/project-recipes/adf/connections/azure-table-storage.yaml +7 -0
- package/project-recipes/adf/connections/cassandra.yaml +9 -0
- package/project-recipes/adf/connections/dataverse.yaml +9 -0
- package/project-recipes/adf/connections/db2.yaml +7 -0
- package/project-recipes/adf/connections/dynamics-365.yaml +9 -0
- package/project-recipes/adf/connections/dynamics-ax.yaml +11 -0
- package/project-recipes/adf/connections/dynamics-crm.yaml +9 -0
- package/project-recipes/adf/connections/fabric-lakehouse.yaml +8 -0
- package/project-recipes/adf/connections/fabric-warehouse.yaml +9 -0
- package/project-recipes/adf/connections/files.yaml +9 -0
- package/project-recipes/adf/connections/ftp.yaml +9 -0
- package/project-recipes/adf/connections/google-ads.yaml +12 -0
- package/project-recipes/adf/connections/google-bigquery.yaml +8 -0
- package/project-recipes/adf/connections/google-cloud-storage.yaml +8 -0
- package/project-recipes/adf/connections/greenplum.yaml +10 -0
- package/project-recipes/adf/connections/hdfs.yaml +9 -0
- package/project-recipes/adf/connections/hive.yaml +11 -0
- package/project-recipes/adf/connections/http.yaml +7 -0
- package/project-recipes/adf/connections/hubspot.yaml +10 -0
- package/project-recipes/adf/connections/impala.yaml +11 -0
- package/project-recipes/adf/connections/informix.yaml +9 -0
- package/project-recipes/adf/connections/jira.yaml +9 -0
- package/project-recipes/adf/connections/mariadb.yaml +10 -0
- package/project-recipes/adf/connections/microsoft-365.yaml +10 -0
- package/project-recipes/adf/connections/microsoft-access.yaml +9 -0
- package/project-recipes/adf/connections/mongodb-atlas.yaml +8 -0
- package/project-recipes/adf/connections/mongodb.yaml +8 -0
- package/project-recipes/adf/connections/mysql.yaml +10 -0
- package/project-recipes/adf/connections/netezza.yaml +11 -0
- package/project-recipes/adf/connections/odata.yaml +9 -0
- package/project-recipes/adf/connections/odbc.yaml +9 -0
- package/project-recipes/adf/connections/oracle-cloud-storage.yaml +9 -0
- package/project-recipes/adf/connections/oracle.yaml +9 -0
- package/project-recipes/adf/connections/postgresql.yaml +10 -0
- package/project-recipes/adf/connections/presto.yaml +11 -0
- package/project-recipes/adf/connections/quickbooks.yaml +10 -0
- package/project-recipes/adf/connections/rest.yaml +12 -0
- package/project-recipes/adf/connections/s3-compatible.yaml +9 -0
- package/project-recipes/adf/connections/salesforce-service-cloud.yaml +10 -0
- package/project-recipes/adf/connections/salesforce.yaml +10 -0
- package/project-recipes/adf/connections/sap-bw-mdx.yaml +11 -0
- package/project-recipes/adf/connections/sap-bw-open-hub.yaml +11 -0
- package/project-recipes/adf/connections/sap-c4c.yaml +9 -0
- package/project-recipes/adf/connections/sap-ecc.yaml +9 -0
- package/project-recipes/adf/connections/sap-hana.yaml +7 -0
- package/project-recipes/adf/connections/sap-table.yaml +11 -0
- package/project-recipes/adf/connections/servicenow.yaml +9 -0
- package/project-recipes/adf/connections/sftp.yaml +10 -0
- package/project-recipes/adf/connections/sharepoint-online-list.yaml +10 -0
- package/project-recipes/adf/connections/shopify.yaml +8 -0
- package/project-recipes/adf/connections/snowflake.yaml +11 -0
- package/project-recipes/adf/connections/spark.yaml +11 -0
- package/project-recipes/adf/connections/sqlserver.yaml +9 -0
- package/project-recipes/adf/connections/square.yaml +10 -0
- package/project-recipes/adf/connections/sybase.yaml +10 -0
- package/project-recipes/adf/connections/teradata.yaml +9 -0
- package/project-recipes/adf/connections/vertica.yaml +10 -0
- package/project-recipes/adf/connections/web-table.yaml +7 -0
- package/project-recipes/adf/connections/xero.yaml +10 -0
- package/project-recipes/adf/contracts/records.yaml +12 -0
- package/project-recipes/adf/contracts/salesforce-account.yaml +12 -0
- package/project-recipes/adf/flows/adls-gen2.yaml +14 -0
- package/project-recipes/adf/flows/amazon-rds-oracle.yaml +12 -0
- package/project-recipes/adf/flows/amazon-rds-sqlserver.yaml +12 -0
- package/project-recipes/adf/flows/amazon-redshift.yaml +12 -0
- package/project-recipes/adf/flows/amazon-s3.yaml +14 -0
- package/project-recipes/adf/flows/azure-blob.yaml +14 -0
- package/project-recipes/adf/flows/azure-cosmos-db-mongodb.yaml +12 -0
- package/project-recipes/adf/flows/azure-cosmos-db-nosql.yaml +12 -0
- package/project-recipes/adf/flows/azure-cosmos-postgresql.yaml +12 -0
- package/project-recipes/adf/flows/azure-data-explorer.yaml +13 -0
- package/project-recipes/adf/flows/azure-databricks-delta.yaml +15 -0
- package/project-recipes/adf/flows/azure-files.yaml +14 -0
- package/project-recipes/adf/flows/azure-mysql.yaml +12 -0
- package/project-recipes/adf/flows/azure-postgresql.yaml +12 -0
- package/project-recipes/adf/flows/azure-sql-database.yaml +12 -0
- package/project-recipes/adf/flows/azure-sql-managed-instance.yaml +12 -0
- package/project-recipes/adf/flows/azure-synapse.yaml +12 -0
- package/project-recipes/adf/flows/azure-table-storage.yaml +12 -0
- package/project-recipes/adf/flows/cassandra.yaml +12 -0
- package/project-recipes/adf/flows/dataverse.yaml +12 -0
- package/project-recipes/adf/flows/db2.yaml +12 -0
- package/project-recipes/adf/flows/dynamics-365.yaml +12 -0
- package/project-recipes/adf/flows/dynamics-ax.yaml +12 -0
- package/project-recipes/adf/flows/dynamics-crm.yaml +12 -0
- package/project-recipes/adf/flows/fabric-lakehouse.yaml +14 -0
- package/project-recipes/adf/flows/fabric-warehouse.yaml +14 -0
- package/project-recipes/adf/flows/files.yaml +14 -0
- package/project-recipes/adf/flows/ftp.yaml +14 -0
- package/project-recipes/adf/flows/google-ads.yaml +13 -0
- package/project-recipes/adf/flows/google-bigquery.yaml +12 -0
- package/project-recipes/adf/flows/google-cloud-storage.yaml +14 -0
- package/project-recipes/adf/flows/greenplum.yaml +12 -0
- package/project-recipes/adf/flows/hdfs.yaml +14 -0
- package/project-recipes/adf/flows/hive.yaml +12 -0
- package/project-recipes/adf/flows/http.yaml +18 -0
- package/project-recipes/adf/flows/hubspot.yaml +12 -0
- package/project-recipes/adf/flows/impala.yaml +12 -0
- package/project-recipes/adf/flows/informix.yaml +13 -0
- package/project-recipes/adf/flows/jira.yaml +12 -0
- package/project-recipes/adf/flows/mariadb.yaml +13 -0
- package/project-recipes/adf/flows/microsoft-365.yaml +19 -0
- package/project-recipes/adf/flows/microsoft-access.yaml +13 -0
- package/project-recipes/adf/flows/mongodb-atlas.yaml +12 -0
- package/project-recipes/adf/flows/mongodb.yaml +12 -0
- package/project-recipes/adf/flows/mysql.yaml +12 -0
- package/project-recipes/adf/flows/netezza.yaml +13 -0
- package/project-recipes/adf/flows/odata.yaml +12 -0
- package/project-recipes/adf/flows/odbc.yaml +13 -0
- package/project-recipes/adf/flows/oracle-cloud-storage.yaml +14 -0
- package/project-recipes/adf/flows/oracle.yaml +12 -0
- package/project-recipes/adf/flows/postgresql.yaml +18 -0
- package/project-recipes/adf/flows/presto.yaml +12 -0
- package/project-recipes/adf/flows/quickbooks.yaml +12 -0
- package/project-recipes/adf/flows/rest.yaml +21 -0
- package/project-recipes/adf/flows/s3-compatible.yaml +14 -0
- package/project-recipes/adf/flows/salesforce-service-cloud.yaml +12 -0
- package/project-recipes/adf/flows/salesforce.yaml +13 -0
- package/project-recipes/adf/flows/sap-bw-mdx.yaml +14 -0
- package/project-recipes/adf/flows/sap-bw-open-hub.yaml +13 -0
- package/project-recipes/adf/flows/sap-c4c.yaml +12 -0
- package/project-recipes/adf/flows/sap-ecc.yaml +13 -0
- package/project-recipes/adf/flows/sap-hana.yaml +14 -0
- package/project-recipes/adf/flows/sap-table.yaml +13 -0
- package/project-recipes/adf/flows/servicenow.yaml +12 -0
- package/project-recipes/adf/flows/sftp.yaml +14 -0
- package/project-recipes/adf/flows/sharepoint-online-list.yaml +12 -0
- package/project-recipes/adf/flows/shopify.yaml +12 -0
- package/project-recipes/adf/flows/snowflake.yaml +15 -0
- package/project-recipes/adf/flows/spark.yaml +12 -0
- package/project-recipes/adf/flows/sqlserver.yaml +12 -0
- package/project-recipes/adf/flows/square.yaml +13 -0
- package/project-recipes/adf/flows/sybase.yaml +13 -0
- package/project-recipes/adf/flows/teradata.yaml +12 -0
- package/project-recipes/adf/flows/vertica.yaml +12 -0
- package/project-recipes/adf/flows/web-table.yaml +14 -0
- package/project-recipes/adf/flows/xero.yaml +12 -0
- package/project-recipes/adf/platform.yaml +29 -0
- package/project-recipes/adf/project.yaml +10 -0
- package/project-recipes/adf/sample.yaml +3 -0
- package/project-recipes/adf/standard.yaml +15 -0
- package/project-templates/kafka/README.md +12 -0
- package/project-templates/kafka/connections/events.yaml +8 -0
- package/project-templates/kafka/contracts/page_views.yaml +13 -0
- package/project-templates/kafka/contracts/purchases.yaml +13 -0
- package/project-templates/kafka/flows/events.yaml +10 -0
- package/project-templates/kafka/project.yaml +10 -0
- package/project-templates/kafka/standard.yaml +4 -0
- package/project-templates/kafka/template.yaml +3 -0
- package/project-templates/minimal/README.md +10 -0
- package/project-templates/minimal/connections/shop.yaml +7 -0
- package/project-templates/minimal/contracts/orders.yaml +14 -0
- package/project-templates/minimal/flows/orders.yaml +6 -0
- package/project-templates/minimal/project.yaml +11 -0
- package/project-templates/minimal/standard.yaml +4 -0
- package/project-templates/minimal/template.yaml +7 -0
- package/project-templates/private-files/README.md +29 -0
- package/project-templates/private-files/connections/share.yaml +10 -0
- package/project-templates/private-files/contracts/sales.yaml +14 -0
- package/project-templates/private-files/contracts/stock.yaml +14 -0
- package/project-templates/private-files/flows/stores.yaml +9 -0
- package/project-templates/private-files/platform.yaml +11 -0
- package/project-templates/private-files/project.yaml +19 -0
- package/project-templates/private-files/standard.yaml +11 -0
- package/project-templates/private-files/template.yaml +10 -0
- package/project-templates/private-sql-server/README.md +25 -0
- package/project-templates/private-sql-server/connections/erp.yaml +10 -0
- package/project-templates/private-sql-server/contracts/customers.yaml +14 -0
- package/project-templates/private-sql-server/contracts/invoices.yaml +15 -0
- package/project-templates/private-sql-server/flows/erp.yaml +13 -0
- package/project-templates/private-sql-server/platform.yaml +11 -0
- package/project-templates/private-sql-server/project.yaml +19 -0
- package/project-templates/private-sql-server/standard.yaml +17 -0
- package/project-templates/private-sql-server/template.yaml +10 -0
- package/project-templates/pyspark/README.md +12 -0
- package/project-templates/pyspark/connections/billing.yaml +7 -0
- package/project-templates/pyspark/contracts/invoices.yaml +16 -0
- package/project-templates/pyspark/contracts/monthly_revenue.yaml +14 -0
- package/project-templates/pyspark/flows/billing.yaml +6 -0
- package/project-templates/pyspark/project.yaml +11 -0
- package/project-templates/pyspark/standard.yaml +4 -0
- package/project-templates/pyspark/template.yaml +3 -0
- package/project-templates/pyspark/transforms/monthly_revenue.py +10 -0
- package/project-templates/pyspark/transforms/monthly_revenue.yaml +10 -0
- package/project-templates/retail/README.md +22 -0
- package/project-templates/retail/connections/shop.yaml +8 -0
- package/project-templates/retail/contracts/customers.yaml +12 -0
- package/project-templates/retail/contracts/daily_sales.yaml +19 -0
- package/project-templates/retail/contracts/orders.yaml +16 -0
- package/project-templates/retail/flows/shop.yaml +18 -0
- package/project-templates/retail/platform.yaml +21 -0
- package/project-templates/retail/project.yaml +18 -0
- package/project-templates/retail/standard.yaml +15 -0
- package/project-templates/retail/template.yaml +10 -0
- package/project-templates/retail/transforms/daily_sales.sql +7 -0
- package/project-templates/retail/transforms/daily_sales.yaml +7 -0
- package/project-templates/salesforce/README.md +6 -0
- package/project-templates/salesforce/connections/salesforce.yaml +7 -0
- package/project-templates/salesforce/contracts/accounts.yaml +13 -0
- package/project-templates/salesforce/contracts/opportunities.yaml +14 -0
- package/project-templates/salesforce/flows/salesforce.yaml +7 -0
- package/project-templates/salesforce/project.yaml +9 -0
- package/project-templates/salesforce/standard.yaml +4 -0
- package/project-templates/salesforce/template.yaml +3 -0
- package/project-templates/sql-server/README.md +17 -0
- package/project-templates/sql-server/connections/erp.yaml +8 -0
- package/project-templates/sql-server/contracts/customer_balances.yaml +13 -0
- package/project-templates/sql-server/contracts/customers.yaml +13 -0
- package/project-templates/sql-server/contracts/invoices.yaml +14 -0
- package/project-templates/sql-server/flows/erp.yaml +13 -0
- package/project-templates/sql-server/platform.yaml +6 -0
- package/project-templates/sql-server/project.yaml +13 -0
- package/project-templates/sql-server/standard.yaml +9 -0
- package/project-templates/sql-server/template.yaml +3 -0
- package/project-templates/sql-server/transforms/customer_balances.sql +5 -0
- package/project-templates/sql-server/transforms/customer_balances.yaml +6 -0
- package/schemas/NOTICE.md +7 -0
- package/schemas/connection.schema.yaml +37 -0
- package/schemas/flow.schema.yaml +124 -0
- package/schemas/odcs-v3.1.0.schema.json +2808 -0
- package/schemas/platform.schema.yaml +260 -0
- package/schemas/standard.schema.yaml +211 -0
- package/schemas/transform.schema.yaml +108 -0
- package/templates/apply-contract.py.liquid +58 -0
- package/templates/change-data.sql.liquid +20 -0
- package/templates/materialised-view.py.liquid +28 -0
- package/templates/materialised-view.sql.liquid +4 -0
- package/templates/read-files.liquid +7 -0
- package/templates/streaming-table.sql.liquid +3 -0
- package/templates/table.liquid +17 -0
- package/CHANGELOG.md +0 -162
- package/SECURITY.md +0 -32
- package/THIRD_PARTY_NOTICES.md +0 -3678
- package/build/cli/cli/index.d.ts +0 -2
- package/build/cli/cli/index.js +0 -685
- package/build/cli/cli/operation-worker.d.ts +0 -1
- package/build/cli/cli/operation-worker.js +0 -5
- package/build/cli/cli/output.d.ts +0 -3
- package/build/cli/cli/output.js +0 -246
- package/build/cli/cli/plugin-browser.d.ts +0 -14
- package/build/cli/cli/plugin-browser.js +0 -74
- package/build/cli/cli/plugin-resolution.d.ts +0 -126
- package/build/cli/cli/plugin-resolution.js +0 -270
- package/build/cli/cli/presentation.d.ts +0 -12
- package/build/cli/cli/presentation.js +0 -57
- package/build/cli/cli/workflow-commands.d.ts +0 -15
- package/build/cli/cli/workflow-commands.js +0 -430
- package/build/cli/mcp/index.d.ts +0 -3
- package/build/cli/mcp/index.js +0 -67
- package/build/cli/version.d.ts +0 -2
- package/build/cli/version.js +0 -14
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
2
|
+
title: Flow
|
|
3
|
+
description: >-
|
|
4
|
+
Brings tables from one connection into the platform. The standard chooses how, unless `ingest` or
|
|
5
|
+
`store` names a method.
|
|
6
|
+
type: object
|
|
7
|
+
additionalProperties: false
|
|
8
|
+
required: [apiVersion, kind, id, source, tables]
|
|
9
|
+
properties:
|
|
10
|
+
apiVersion: { const: ingestron.io/v1, description: Always ingestron.io/v1. }
|
|
11
|
+
kind: { const: Flow, description: The document kind. }
|
|
12
|
+
id:
|
|
13
|
+
{
|
|
14
|
+
type: string,
|
|
15
|
+
pattern: "^[a-z][a-z0-9_]*$",
|
|
16
|
+
description: "The flow's id: lowercase letters, digits and underscores.",
|
|
17
|
+
examples: [shop],
|
|
18
|
+
}
|
|
19
|
+
description:
|
|
20
|
+
{
|
|
21
|
+
type: string,
|
|
22
|
+
description: "What this document is for, in a sentence.",
|
|
23
|
+
examples: [Orders and customers from the web shop.],
|
|
24
|
+
}
|
|
25
|
+
source: { type: string, description: Id of the Connection to read from., examples: [shop] }
|
|
26
|
+
layer:
|
|
27
|
+
{
|
|
28
|
+
type: string,
|
|
29
|
+
description: "Layer the tables land in. Default: the standard's first layer.",
|
|
30
|
+
examples: [bronze],
|
|
31
|
+
}
|
|
32
|
+
tables:
|
|
33
|
+
type: object
|
|
34
|
+
minProperties: 1
|
|
35
|
+
description: The tables to bring in, by table name.
|
|
36
|
+
propertyNames: { pattern: "^[a-z][a-z0-9_]*$" }
|
|
37
|
+
additionalProperties:
|
|
38
|
+
type: object
|
|
39
|
+
additionalProperties: false
|
|
40
|
+
required: [object, contract]
|
|
41
|
+
properties:
|
|
42
|
+
object:
|
|
43
|
+
{ type: string, description: The table or file path at the source., examples: [orders] }
|
|
44
|
+
contract:
|
|
45
|
+
{
|
|
46
|
+
type: string,
|
|
47
|
+
description: Id of the DataContract (ODCS) for this table.,
|
|
48
|
+
examples: [shop.orders],
|
|
49
|
+
}
|
|
50
|
+
expectations:
|
|
51
|
+
{ $ref: "#/$defs/expectations", description: Your own checks on this table's rows. }
|
|
52
|
+
ingest: { $ref: "#/$defs/with", description: Method settings for this table only. }
|
|
53
|
+
store: { $ref: "#/$defs/with", description: Method settings for this table only. }
|
|
54
|
+
examples:
|
|
55
|
+
- orders:
|
|
56
|
+
object: orders
|
|
57
|
+
contract: shop.orders
|
|
58
|
+
ingest: { $ref: "#/$defs/ingest", description: How data leaves the source. }
|
|
59
|
+
store: { $ref: "#/$defs/store", description: How data is kept in the platform. }
|
|
60
|
+
$defs:
|
|
61
|
+
with:
|
|
62
|
+
type: object
|
|
63
|
+
additionalProperties: false
|
|
64
|
+
properties:
|
|
65
|
+
with:
|
|
66
|
+
{
|
|
67
|
+
type: object,
|
|
68
|
+
description: "Settings for the chosen method, over the standard's.",
|
|
69
|
+
examples: [{ format: csv, options: { header: true } }],
|
|
70
|
+
}
|
|
71
|
+
expectations:
|
|
72
|
+
type: array
|
|
73
|
+
description: Data quality checks on each row.
|
|
74
|
+
items:
|
|
75
|
+
type: object
|
|
76
|
+
additionalProperties: false
|
|
77
|
+
required: [name, check]
|
|
78
|
+
properties:
|
|
79
|
+
name:
|
|
80
|
+
{
|
|
81
|
+
type: string,
|
|
82
|
+
pattern: "^[a-z][a-z0-9_]*$",
|
|
83
|
+
description: "A name for the check: lowercase letters, digits and underscores.",
|
|
84
|
+
examples: [positive_total],
|
|
85
|
+
}
|
|
86
|
+
check:
|
|
87
|
+
{
|
|
88
|
+
type: string,
|
|
89
|
+
description: "A SQL condition every valid row meets, such as `total >= 0`.",
|
|
90
|
+
examples: [total >= 0],
|
|
91
|
+
}
|
|
92
|
+
action:
|
|
93
|
+
enum: [warn, drop, fail]
|
|
94
|
+
description: "What happens to a row that fails. Default: the standard's `quality.default`."
|
|
95
|
+
enumDescriptions:
|
|
96
|
+
- Keep the row and record that it failed.
|
|
97
|
+
- Leave the row out of the table.
|
|
98
|
+
- Stop the update.
|
|
99
|
+
ingest:
|
|
100
|
+
type: object
|
|
101
|
+
additionalProperties: false
|
|
102
|
+
properties:
|
|
103
|
+
uses:
|
|
104
|
+
type: string
|
|
105
|
+
pattern: ^[a-z][a-z0-9-]*$
|
|
106
|
+
description: A method the standard allows. Leave out to let the standard choose.
|
|
107
|
+
examples:
|
|
108
|
+
- files
|
|
109
|
+
with:
|
|
110
|
+
type: object
|
|
111
|
+
description: Method settings for every table of this flow.
|
|
112
|
+
store:
|
|
113
|
+
type: object
|
|
114
|
+
additionalProperties: false
|
|
115
|
+
properties:
|
|
116
|
+
uses:
|
|
117
|
+
type: string
|
|
118
|
+
pattern: ^[a-z][a-z0-9-]*$
|
|
119
|
+
description: A method the standard allows. Leave out to let the standard choose.
|
|
120
|
+
examples:
|
|
121
|
+
- streaming-table
|
|
122
|
+
with:
|
|
123
|
+
type: object
|
|
124
|
+
description: Method settings for every table of this flow.
|