@walkeros/server-destination-gcp 4.3.1 → 4.3.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @walkeros/server-destination-gcp
2
2
 
3
+ ## 4.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - @walkeros/core@4.3.2
8
+ - @walkeros/server-core@4.3.2
9
+
3
10
  ## 4.3.1
4
11
 
5
12
  ### Patch Changes
package/dist/dev.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,o=(e,r)=>{for(var i in r)t(e,i,{get:r[i],enumerable:!0})},a={};o(a,{examples:()=>O,hints:()=>ne,pubsubExamples:()=>L,schemas:()=>n}),module.exports=(e=a,((e,o,a,n)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let l of i(o))s.call(e,l)||l===a||t(e,l,{get:()=>o[l],enumerable:!(n=r(o,l))||n.enumerable});return e})(t({},"__esModule",{value:!0}),e));var n={};o(n,{mapping:()=>g,pubsubMapping:()=>k,pubsubSettings:()=>w,pubsubSetup:()=>j,settings:()=>p});var l=require("@walkeros/core/dev"),c=require("@walkeros/core/dev"),u=c.z.object({client:c.z.any().describe("Google Cloud BigQuery client instance (like new BigQuery({ projectId, keyFilename }))").optional(),projectId:c.z.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),datasetId:c.z.string().min(1).default("walkerOS").describe("BigQuery dataset ID where events will be stored (like walker_events)"),tableId:c.z.string().min(1).default("events").describe("BigQuery table ID for event storage (like events)"),location:c.z.string().default("EU").describe("Geographic location for the BigQuery dataset (like US)"),bigquery:c.z.any().describe('Additional BigQuery client configuration options (like { keyFilename: "path/to/key.json" })').optional()}),d=require("@walkeros/core/dev").z.object({}),p=(0,l.zodToSchema)(u),g=(0,l.zodToSchema)(d),m=require("@walkeros/core/dev"),b=require("@walkeros/core/dev"),h=b.z.object({client:b.z.any().describe("Google Cloud Pub/Sub client instance (like new PubSub({ projectId, keyFilename }))").optional(),projectId:b.z.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),topic:b.z.string().min(1).describe("Pub/Sub topic short name (like events). The full resource name projects/<projectId>/topics/<topic> is built by the SDK."),credentials:b.z.any().describe("Service account credentials as a JSON string or an object with client_email and private_key. Default: Application Default Credentials (ADC). (deprecated: use config.credentials)").optional(),apiEndpoint:b.z.string().describe("Override Pub/Sub API endpoint. Useful for the local emulator (like localhost:8085).").optional(),orderingKey:b.z.any().describe("Mapping value resolved per-event. Truthy enables per-key ordering for the publish.").optional(),attributes:b.z.any().describe("Default per-event attribute map merged into every published message. Mapping.Map shape.").optional()}),y=require("@walkeros/core/dev"),v=y.z.object({topic:y.z.string().describe("Per-rule topic override. Falls back to settings.topic if absent.").optional(),orderingKey:y.z.any().describe("Per-rule ordering-key Mapping.Value. Overrides settings.orderingKey when set.").optional(),attributes:y.z.any().describe("Per-rule attribute Mapping.Map merged on top of settings.attributes.").optional()}),f=require("@walkeros/core/dev"),S=f.z.object({messageStoragePolicy:f.z.object({allowedPersistenceRegions:f.z.array(f.z.string()).describe("Geographic regions for at-rest message storage. Default: EU multi-region (eu-west1, eu-west3, eu-west4).")}).describe("Topic-level message storage policy.").optional(),messageRetentionDuration:f.z.object({seconds:f.z.number().describe("Retention window in seconds. Default: project default.")}).describe("Topic-level retention configuration.").optional(),kmsKeyName:f.z.string().describe("Customer-managed encryption key (CMEK) resource name. Optional.").optional(),labels:f.z.record(f.z.string(),f.z.string()).describe("Topic labels for organization and billing.").optional()}),w=(0,m.zodToSchema)(h),k=(0,m.zodToSchema)(v),j=(0,m.zodToSchema)(S),O={};o(O,{env:()=>z,step:()=>W});var z={};o(z,{push:()=>x,simulation:()=>M});var A=require("events"),C=[],P=null,D=null,E=null,T=null,I=class extends A.EventEmitter{streamId;constructor(e){super(),this.streamId=e}getStreamId(){return this.streamId}onConnectionError(e){return C.push({method:"onConnectionError",args:[]}),this.on("error",e),{off:()=>{this.off("error",e)}}}__emitConnectionError(e){this.emit("error",e)}},N=[],R={convertStorageSchemaToProto2Descriptor:(e,t)=>(C.push({method:"adapt.convertStorageSchemaToProto2Descriptor",args:[e,t]}),{name:"root",field:[]})},J={WriterClient:class{constructor(e){C.push({method:"WriterClient.ctor",args:[e]})}async createStreamConnection(e,t){if("DEFAULT"!==e.streamId)throw new Error(`mock createStreamConnection: expected streamId='DEFAULT', got ${JSON.stringify(e)}`);C.push({method:"createStreamConnection",args:[e,t]});const r=T;if(null!==r)throw T=null,r;const i=new I(`${e.destinationTable}/streams/_default`);return N.push(i),i}async getWriteStream(e,t){return C.push({method:"getWriteStream",args:[e,t]}),{tableSchema:{fields:[]}}}close(){C.push({method:"WriterClient.close",args:[]})}},JSONWriter:class{constructor(e){C.push({method:"JSONWriter.ctor",args:[e]})}appendRows(e,t){C.push({method:"appendRows",args:[e,t]});const r=D;if(null!==r)throw D=null,r;const i=P;P=null;const s=E;return E=null,{getResult:async()=>{if(null!==s)throw s;return{appendResult:{offset:{value:"0"}},rowErrors:i??[],writeStream:"projects/p/datasets/d/tables/t/streams/_default"}}}}close(){C.push({method:"JSONWriter.close",args:[]})}},DefaultStream:"DEFAULT"},q=()=>{};var x={get BigQuery(){return class{calls;options;constructor(e){this.options=e,this.calls=[]}dataset(e){return this.calls.push({method:"dataset",args:[e]}),this}table(e){return this.calls.push({method:"table",args:[e]}),this}async insert(e){return this.calls.push({method:"insert",args:[e]}),Promise.resolve()}get mockFn(){return q}}},get WriterClient(){return J.WriterClient},get JSONWriter(){return J.JSONWriter},get adapt(){return R},get managedwriterModule(){return J}},M=["BigQuery","WriterClient","JSONWriter","adapt"],W={};o(W,{pageView:()=>U,purchase:()=>G});var B=require("@walkeros/core");function _(e){return null==e?null:"object"==typeof e?Array.isArray(e)&&0===e.length?null:Array.isArray(e)||0!==Object.keys(e).length?JSON.stringify(e):null:JSON.stringify(e)}function Q(e){return function(e){return{name:e.name,data:_(e.data),context:_(e.context),globals:_(e.globals),custom:_(e.custom),user:_(e.user),nested:_(e.nested),consent:_(e.consent),id:e.id,trigger:e.trigger,entity:e.entity,action:e.action,timestamp:1e3*new Date(e.timestamp).getTime(),timing:e.timing,source:_(e.source)}}(e)}var F=(0,B.getEvent)("page view",{timestamp:1700001100,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server"}}),U={title:"Page view",description:"A page view is appended as one row through the BigQuery Storage Write API JSONWriter. Nested objects/arrays in data, source, etc. are JSON-stringified by eventToRow.",in:F,mapping:void 0,out:[["appendRows",[Q(F)]]]},K=(0,B.getEvent)("order complete",{timestamp:1700001101,data:{id:"ORD-500",total:199.99,items:[{sku:"SKU-1",qty:2}]},source:{type:"express",platform:"server"}}),G={title:"Purchase",description:"An order event is appended as a single row through JSONWriter.appendRows. The entire nested data object (including arrays like items) is JSON-stringified into the data column via eventToRow().",in:K,mapping:void 0,out:[["appendRows",[Q(K)]]]},L={};o(L,{env:()=>V,step:()=>X});var V={};o(V,{simulation:()=>$});var $=["PubSub"],X={};o(X,{defaultPush:()=>te,mappedAttributes:()=>se,mappedData:()=>oe,mappedOrderingKey:()=>ie,mappedTopic:()=>re,pageView:()=>ae});var H=require("@walkeros/core"),Y=(0,H.getEvent)("order complete",{timestamp:1700001100,data:{id:"ORD-500",total:199.99,currency:"EUR"},user:{id:"usr-789"},source:{type:"express",platform:"server",trace:"1a2b3c4d5e6f70819a2b3c4d5e6f7081",count:1}}),Z=(0,H.getEvent)("page view",{timestamp:1700001101,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server",trace:"9f8e7d6c5b4a39281706f5e4d3c2b1a0",count:1}});function ee(e){const t=e.source.platform??"default",r={...e,source:{...e.source,release:{[t]:"4.3.1"}}};return Buffer.from(JSON.stringify(r))}var te={title:"Default publish",description:"An event is published to the configured Pub/Sub topic with the full JSON event as the message body and no ordering key.",in:Y,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:ee(Y)}]]},re={title:"Topic override",description:"A mapping rule overrides the destination default topic so order events are published to a dedicated topic.",in:Y,mapping:{settings:{topic:"orders"}},out:[["topic","orders",{messageOrdering:!1}],["publishMessage","orders",{data:ee(Y)}]]},ie={title:"Ordering key from user",description:"A mapping resolves the ordering key from event.user.id, enabling per-user ordering for this publish.",in:Y,mapping:{settings:{orderingKey:"user.id"}},out:[["topic","events",{messageOrdering:!0}],["publishMessage","events",{data:ee(Y),orderingKey:"usr-789"}]]},se={title:"Mapped attributes",description:"A mapping resolves a per-event attribute map, here exposing entity and action as Pub/Sub attributes for routing in subscribers.",in:Y,mapping:{settings:{attributes:{entity:"entity",action:"action"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:ee(Y),attributes:{entity:"order",action:"complete"}}]]},oe={title:"Mapped payload",description:"A data mapping transforms the event payload before publish. The rewritten object becomes the Pub/Sub message body.",in:Y,mapping:{data:{map:{order_id:"data.id",revenue:"data.total",currency:"data.currency"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:Buffer.from(JSON.stringify({order_id:"ORD-500",revenue:199.99,currency:"EUR"}))}]]},ae={title:"Page view",description:"A page view is published to the default topic with no ordering key, demonstrating the simplest publish path.",in:Z,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:ee(Z)}]]},ne={"auth-methods":{text:'Supports three auth methods: SA key file via bigquery options ({ bigquery: { keyFilename: "./sa.json" } }), Application Default Credentials (automatic on GCP infrastructure — just provide projectId), or a pre-configured BigQuery client instance (client option). See settings schema for all options.',code:[{lang:"json",code:'{ "settings": { "projectId": "my-project", "bigquery": { "keyFilename": "./sa.json" } } }'},{lang:"json",code:'{ "settings": { "projectId": "my-project" } }'}]},"storage-format":{text:'All events are stored in a single table. Scalar fields (strings, numbers, booleans) are stored as-is. Nested objects and arrays are JSON-stringified automatically. Defaults: dataset "walkeros", table "events", location "EU" — all overridable via settings.'},"query-json-columns":{text:"Nested event fields (data, context, globals, user) are stored as JSON strings. Use BigQuery JSON_EXTRACT_SCALAR to query them. Field paths follow the walkerOS event structure.",code:[{lang:"sql",code:"SELECT JSON_EXTRACT_SCALAR(data, '$.total') AS total FROM `project.walkeros.events` WHERE entity = 'order'"}]},"troubleshoot-empty-table":{text:"Events not appearing? Common causes: projectId doesn't match GCP project, dataset doesn't exist yet (create via BigQuery console or bq CLI before first push), or SA key lacks bigquery.dataEditor role. The destination validates client/datasetId/tableId at push time but GCP permission errors surface from the BigQuery SDK."}};//# sourceMappingURL=dev.js.map
1
+ "use strict";var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,o=(e,r)=>{for(var i in r)t(e,i,{get:r[i],enumerable:!0})},a={};o(a,{examples:()=>O,hints:()=>ne,pubsubExamples:()=>L,schemas:()=>n}),module.exports=(e=a,((e,o,a,n)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let l of i(o))s.call(e,l)||l===a||t(e,l,{get:()=>o[l],enumerable:!(n=r(o,l))||n.enumerable});return e})(t({},"__esModule",{value:!0}),e));var n={};o(n,{mapping:()=>g,pubsubMapping:()=>k,pubsubSettings:()=>w,pubsubSetup:()=>j,settings:()=>p});var l=require("@walkeros/core/dev"),c=require("@walkeros/core/dev"),u=c.z.object({client:c.z.any().describe("Google Cloud BigQuery client instance (like new BigQuery({ projectId, keyFilename }))").optional(),projectId:c.z.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),datasetId:c.z.string().min(1).default("walkerOS").describe("BigQuery dataset ID where events will be stored (like walker_events)"),tableId:c.z.string().min(1).default("events").describe("BigQuery table ID for event storage (like events)"),location:c.z.string().default("EU").describe("Geographic location for the BigQuery dataset (like US)"),bigquery:c.z.any().describe('Additional BigQuery client configuration options (like { keyFilename: "path/to/key.json" })').optional()}),d=require("@walkeros/core/dev").z.object({}),p=(0,l.zodToSchema)(u),g=(0,l.zodToSchema)(d),m=require("@walkeros/core/dev"),b=require("@walkeros/core/dev"),h=b.z.object({client:b.z.any().describe("Google Cloud Pub/Sub client instance (like new PubSub({ projectId, keyFilename }))").optional(),projectId:b.z.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),topic:b.z.string().min(1).describe("Pub/Sub topic short name (like events). The full resource name projects/<projectId>/topics/<topic> is built by the SDK."),credentials:b.z.any().describe("Service account credentials as a JSON string or an object with client_email and private_key. Default: Application Default Credentials (ADC). (deprecated: use config.credentials)").optional(),apiEndpoint:b.z.string().describe("Override Pub/Sub API endpoint. Useful for the local emulator (like localhost:8085).").optional(),orderingKey:b.z.any().describe("Mapping value resolved per-event. Truthy enables per-key ordering for the publish.").optional(),attributes:b.z.any().describe("Default per-event attribute map merged into every published message. Mapping.Map shape.").optional()}),y=require("@walkeros/core/dev"),v=y.z.object({topic:y.z.string().describe("Per-rule topic override. Falls back to settings.topic if absent.").optional(),orderingKey:y.z.any().describe("Per-rule ordering-key Mapping.Value. Overrides settings.orderingKey when set.").optional(),attributes:y.z.any().describe("Per-rule attribute Mapping.Map merged on top of settings.attributes.").optional()}),f=require("@walkeros/core/dev"),S=f.z.object({messageStoragePolicy:f.z.object({allowedPersistenceRegions:f.z.array(f.z.string()).describe("Geographic regions for at-rest message storage. Default: EU multi-region (eu-west1, eu-west3, eu-west4).")}).describe("Topic-level message storage policy.").optional(),messageRetentionDuration:f.z.object({seconds:f.z.number().describe("Retention window in seconds. Default: project default.")}).describe("Topic-level retention configuration.").optional(),kmsKeyName:f.z.string().describe("Customer-managed encryption key (CMEK) resource name. Optional.").optional(),labels:f.z.record(f.z.string(),f.z.string()).describe("Topic labels for organization and billing.").optional()}),w=(0,m.zodToSchema)(h),k=(0,m.zodToSchema)(v),j=(0,m.zodToSchema)(S),O={};o(O,{env:()=>z,step:()=>W});var z={};o(z,{push:()=>x,simulation:()=>M});var A=require("events"),C=[],P=null,D=null,E=null,T=null,I=class extends A.EventEmitter{streamId;constructor(e){super(),this.streamId=e}getStreamId(){return this.streamId}onConnectionError(e){return C.push({method:"onConnectionError",args:[]}),this.on("error",e),{off:()=>{this.off("error",e)}}}__emitConnectionError(e){this.emit("error",e)}},N=[],R={convertStorageSchemaToProto2Descriptor:(e,t)=>(C.push({method:"adapt.convertStorageSchemaToProto2Descriptor",args:[e,t]}),{name:"root",field:[]})},J={WriterClient:class{constructor(e){C.push({method:"WriterClient.ctor",args:[e]})}async createStreamConnection(e,t){if("DEFAULT"!==e.streamId)throw new Error(`mock createStreamConnection: expected streamId='DEFAULT', got ${JSON.stringify(e)}`);C.push({method:"createStreamConnection",args:[e,t]});const r=T;if(null!==r)throw T=null,r;const i=new I(`${e.destinationTable}/streams/_default`);return N.push(i),i}async getWriteStream(e,t){return C.push({method:"getWriteStream",args:[e,t]}),{tableSchema:{fields:[]}}}close(){C.push({method:"WriterClient.close",args:[]})}},JSONWriter:class{constructor(e){C.push({method:"JSONWriter.ctor",args:[e]})}appendRows(e,t){C.push({method:"appendRows",args:[e,t]});const r=D;if(null!==r)throw D=null,r;const i=P;P=null;const s=E;return E=null,{getResult:async()=>{if(null!==s)throw s;return{appendResult:{offset:{value:"0"}},rowErrors:i??[],writeStream:"projects/p/datasets/d/tables/t/streams/_default"}}}}close(){C.push({method:"JSONWriter.close",args:[]})}},DefaultStream:"DEFAULT"},q=()=>{};var x={get BigQuery(){return class{calls;options;constructor(e){this.options=e,this.calls=[]}dataset(e){return this.calls.push({method:"dataset",args:[e]}),this}table(e){return this.calls.push({method:"table",args:[e]}),this}async insert(e){return this.calls.push({method:"insert",args:[e]}),Promise.resolve()}get mockFn(){return q}}},get WriterClient(){return J.WriterClient},get JSONWriter(){return J.JSONWriter},get adapt(){return R},get managedwriterModule(){return J}},M=["BigQuery","WriterClient","JSONWriter","adapt"],W={};o(W,{pageView:()=>U,purchase:()=>G});var B=require("@walkeros/core");function _(e){return null==e?null:"object"==typeof e?Array.isArray(e)&&0===e.length?null:Array.isArray(e)||0!==Object.keys(e).length?JSON.stringify(e):null:JSON.stringify(e)}function Q(e){return function(e){return{name:e.name,data:_(e.data),context:_(e.context),globals:_(e.globals),custom:_(e.custom),user:_(e.user),nested:_(e.nested),consent:_(e.consent),id:e.id,trigger:e.trigger,entity:e.entity,action:e.action,timestamp:1e3*new Date(e.timestamp).getTime(),timing:e.timing,source:_(e.source)}}(e)}var F=(0,B.getEvent)("page view",{timestamp:1700001100,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server"}}),U={title:"Page view",description:"A page view is appended as one row through the BigQuery Storage Write API JSONWriter. Nested objects/arrays in data, source, etc. are JSON-stringified by eventToRow.",in:F,mapping:void 0,out:[["appendRows",[Q(F)]]]},K=(0,B.getEvent)("order complete",{timestamp:1700001101,data:{id:"ORD-500",total:199.99,items:[{sku:"SKU-1",qty:2}]},source:{type:"express",platform:"server"}}),G={title:"Purchase",description:"An order event is appended as a single row through JSONWriter.appendRows. The entire nested data object (including arrays like items) is JSON-stringified into the data column via eventToRow().",in:K,mapping:void 0,out:[["appendRows",[Q(K)]]]},L={};o(L,{env:()=>V,step:()=>X});var V={};o(V,{simulation:()=>$});var $=["PubSub"],X={};o(X,{defaultPush:()=>te,mappedAttributes:()=>se,mappedData:()=>oe,mappedOrderingKey:()=>ie,mappedTopic:()=>re,pageView:()=>ae});var H=require("@walkeros/core"),Y=(0,H.getEvent)("order complete",{timestamp:1700001100,data:{id:"ORD-500",total:199.99,currency:"EUR"},user:{id:"usr-789"},source:{type:"express",platform:"server",trace:"1a2b3c4d5e6f70819a2b3c4d5e6f7081",count:1}}),Z=(0,H.getEvent)("page view",{timestamp:1700001101,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server",trace:"9f8e7d6c5b4a39281706f5e4d3c2b1a0",count:1}});function ee(e){const t=e.source.platform??"default",r={...e,source:{...e.source,release:{[t]:"4.3.2"}}};return Buffer.from(JSON.stringify(r))}var te={title:"Default publish",description:"An event is published to the configured Pub/Sub topic with the full JSON event as the message body and no ordering key.",in:Y,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:ee(Y)}]]},re={title:"Topic override",description:"A mapping rule overrides the destination default topic so order events are published to a dedicated topic.",in:Y,mapping:{settings:{topic:"orders"}},out:[["topic","orders",{messageOrdering:!1}],["publishMessage","orders",{data:ee(Y)}]]},ie={title:"Ordering key from user",description:"A mapping resolves the ordering key from event.user.id, enabling per-user ordering for this publish.",in:Y,mapping:{settings:{orderingKey:"user.id"}},out:[["topic","events",{messageOrdering:!0}],["publishMessage","events",{data:ee(Y),orderingKey:"usr-789"}]]},se={title:"Mapped attributes",description:"A mapping resolves a per-event attribute map, here exposing entity and action as Pub/Sub attributes for routing in subscribers.",in:Y,mapping:{settings:{attributes:{entity:"entity",action:"action"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:ee(Y),attributes:{entity:"order",action:"complete"}}]]},oe={title:"Mapped payload",description:"A data mapping transforms the event payload before publish. The rewritten object becomes the Pub/Sub message body.",in:Y,mapping:{data:{map:{order_id:"data.id",revenue:"data.total",currency:"data.currency"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:Buffer.from(JSON.stringify({order_id:"ORD-500",revenue:199.99,currency:"EUR"}))}]]},ae={title:"Page view",description:"A page view is published to the default topic with no ordering key, demonstrating the simplest publish path.",in:Z,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:ee(Z)}]]},ne={"auth-methods":{text:'Supports three auth methods: SA key file via bigquery options ({ bigquery: { keyFilename: "./sa.json" } }), Application Default Credentials (automatic on GCP infrastructure — just provide projectId), or a pre-configured BigQuery client instance (client option). See settings schema for all options.',code:[{lang:"json",code:'{ "settings": { "projectId": "my-project", "bigquery": { "keyFilename": "./sa.json" } } }'},{lang:"json",code:'{ "settings": { "projectId": "my-project" } }'}]},"storage-format":{text:'All events are stored in a single table. Scalar fields (strings, numbers, booleans) are stored as-is. Nested objects and arrays are JSON-stringified automatically. Defaults: dataset "walkeros", table "events", location "EU" — all overridable via settings.'},"query-json-columns":{text:"Nested event fields (data, context, globals, user) are stored as JSON strings. Use BigQuery JSON_EXTRACT_SCALAR to query them. Field paths follow the walkerOS event structure.",code:[{lang:"sql",code:"SELECT JSON_EXTRACT_SCALAR(data, '$.total') AS total FROM `project.walkeros.events` WHERE entity = 'order'"}]},"troubleshoot-empty-table":{text:"Events not appearing? Common causes: projectId doesn't match GCP project, dataset doesn't exist yet (create via BigQuery console or bq CLI before first push), or SA key lacks bigquery.dataEditor role. The destination validates client/datasetId/tableId at push time but GCP permission errors surface from the BigQuery SDK."}};//# sourceMappingURL=dev.js.map
package/dist/dev.mjs CHANGED
@@ -1 +1 @@
1
- var e=Object.defineProperty,t=(t,r)=>{for(var s in r)e(t,s,{get:r[s],enumerable:!0})},r={};t(r,{mapping:()=>c,pubsubMapping:()=>f,pubsubSettings:()=>y,pubsubSetup:()=>v,settings:()=>l});import{zodToSchema as s}from"@walkeros/core/dev";import{z as i}from"@walkeros/core/dev";var o=i.object({client:i.any().describe("Google Cloud BigQuery client instance (like new BigQuery({ projectId, keyFilename }))").optional(),projectId:i.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),datasetId:i.string().min(1).default("walkerOS").describe("BigQuery dataset ID where events will be stored (like walker_events)"),tableId:i.string().min(1).default("events").describe("BigQuery table ID for event storage (like events)"),location:i.string().default("EU").describe("Geographic location for the BigQuery dataset (like US)"),bigquery:i.any().describe('Additional BigQuery client configuration options (like { keyFilename: "path/to/key.json" })').optional()});import{z as a}from"@walkeros/core/dev";var n=a.object({}),l=s(o),c=s(n);import{zodToSchema as d}from"@walkeros/core/dev";import{z as p}from"@walkeros/core/dev";var u=p.object({client:p.any().describe("Google Cloud Pub/Sub client instance (like new PubSub({ projectId, keyFilename }))").optional(),projectId:p.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),topic:p.string().min(1).describe("Pub/Sub topic short name (like events). The full resource name projects/<projectId>/topics/<topic> is built by the SDK."),credentials:p.any().describe("Service account credentials as a JSON string or an object with client_email and private_key. Default: Application Default Credentials (ADC). (deprecated: use config.credentials)").optional(),apiEndpoint:p.string().describe("Override Pub/Sub API endpoint. Useful for the local emulator (like localhost:8085).").optional(),orderingKey:p.any().describe("Mapping value resolved per-event. Truthy enables per-key ordering for the publish.").optional(),attributes:p.any().describe("Default per-event attribute map merged into every published message. Mapping.Map shape.").optional()});import{z as g}from"@walkeros/core/dev";var m=g.object({topic:g.string().describe("Per-rule topic override. Falls back to settings.topic if absent.").optional(),orderingKey:g.any().describe("Per-rule ordering-key Mapping.Value. Overrides settings.orderingKey when set.").optional(),attributes:g.any().describe("Per-rule attribute Mapping.Map merged on top of settings.attributes.").optional()});import{z as b}from"@walkeros/core/dev";var h=b.object({messageStoragePolicy:b.object({allowedPersistenceRegions:b.array(b.string()).describe("Geographic regions for at-rest message storage. Default: EU multi-region (eu-west1, eu-west3, eu-west4).")}).describe("Topic-level message storage policy.").optional(),messageRetentionDuration:b.object({seconds:b.number().describe("Retention window in seconds. Default: project default.")}).describe("Topic-level retention configuration.").optional(),kmsKeyName:b.string().describe("Customer-managed encryption key (CMEK) resource name. Optional.").optional(),labels:b.record(b.string(),b.string()).describe("Topic labels for organization and billing.").optional()}),y=d(u),f=d(m),v=d(h),S={};t(S,{env:()=>w,step:()=>x});var w={};t(w,{push:()=>R,simulation:()=>J});import{EventEmitter as k}from"events";var j=[],O=null,A=null,C=null,D=null,P=class extends k{streamId;constructor(e){super(),this.streamId=e}getStreamId(){return this.streamId}onConnectionError(e){return j.push({method:"onConnectionError",args:[]}),this.on("error",e),{off:()=>{this.off("error",e)}}}__emitConnectionError(e){this.emit("error",e)}},I=[],E={convertStorageSchemaToProto2Descriptor:(e,t)=>(j.push({method:"adapt.convertStorageSchemaToProto2Descriptor",args:[e,t]}),{name:"root",field:[]})},N={WriterClient:class{constructor(e){j.push({method:"WriterClient.ctor",args:[e]})}async createStreamConnection(e,t){if("DEFAULT"!==e.streamId)throw new Error(`mock createStreamConnection: expected streamId='DEFAULT', got ${JSON.stringify(e)}`);j.push({method:"createStreamConnection",args:[e,t]});const r=D;if(null!==r)throw D=null,r;const s=new P(`${e.destinationTable}/streams/_default`);return I.push(s),s}async getWriteStream(e,t){return j.push({method:"getWriteStream",args:[e,t]}),{tableSchema:{fields:[]}}}close(){j.push({method:"WriterClient.close",args:[]})}},JSONWriter:class{constructor(e){j.push({method:"JSONWriter.ctor",args:[e]})}appendRows(e,t){j.push({method:"appendRows",args:[e,t]});const r=A;if(null!==r)throw A=null,r;const s=O;O=null;const i=C;return C=null,{getResult:async()=>{if(null!==i)throw i;return{appendResult:{offset:{value:"0"}},rowErrors:s??[],writeStream:"projects/p/datasets/d/tables/t/streams/_default"}}}}close(){j.push({method:"JSONWriter.close",args:[]})}},DefaultStream:"DEFAULT"},T=()=>{};var R={get BigQuery(){return class{calls;options;constructor(e){this.options=e,this.calls=[]}dataset(e){return this.calls.push({method:"dataset",args:[e]}),this}table(e){return this.calls.push({method:"table",args:[e]}),this}async insert(e){return this.calls.push({method:"insert",args:[e]}),Promise.resolve()}get mockFn(){return T}}},get WriterClient(){return N.WriterClient},get JSONWriter(){return N.JSONWriter},get adapt(){return E},get managedwriterModule(){return N}},J=["BigQuery","WriterClient","JSONWriter","adapt"],x={};t(x,{pageView:()=>_,purchase:()=>U});import{getEvent as M}from"@walkeros/core";function W(e){return null==e?null:"object"==typeof e?Array.isArray(e)&&0===e.length?null:Array.isArray(e)||0!==Object.keys(e).length?JSON.stringify(e):null:JSON.stringify(e)}function B(e){return function(e){return{name:e.name,data:W(e.data),context:W(e.context),globals:W(e.globals),custom:W(e.custom),user:W(e.user),nested:W(e.nested),consent:W(e.consent),id:e.id,trigger:e.trigger,entity:e.entity,action:e.action,timestamp:1e3*new Date(e.timestamp).getTime(),timing:e.timing,source:W(e.source)}}(e)}var Q=M("page view",{timestamp:1700001100,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server"}}),_={title:"Page view",description:"A page view is appended as one row through the BigQuery Storage Write API JSONWriter. Nested objects/arrays in data, source, etc. are JSON-stringified by eventToRow.",in:Q,mapping:void 0,out:[["appendRows",[B(Q)]]]},F=M("order complete",{timestamp:1700001101,data:{id:"ORD-500",total:199.99,items:[{sku:"SKU-1",qty:2}]},source:{type:"express",platform:"server"}}),U={title:"Purchase",description:"An order event is appended as a single row through JSONWriter.appendRows. The entire nested data object (including arrays like items) is JSON-stringified into the data column via eventToRow().",in:F,mapping:void 0,out:[["appendRows",[B(F)]]]},K={};t(K,{env:()=>q,step:()=>L});var q={};t(q,{simulation:()=>G});var G=["PubSub"],L={};t(L,{defaultPush:()=>H,mappedAttributes:()=>ee,mappedData:()=>te,mappedOrderingKey:()=>Z,mappedTopic:()=>Y,pageView:()=>re});import{getEvent as z}from"@walkeros/core";var V=z("order complete",{timestamp:1700001100,data:{id:"ORD-500",total:199.99,currency:"EUR"},user:{id:"usr-789"},source:{type:"express",platform:"server",trace:"1a2b3c4d5e6f70819a2b3c4d5e6f7081",count:1}}),$=z("page view",{timestamp:1700001101,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server",trace:"9f8e7d6c5b4a39281706f5e4d3c2b1a0",count:1}});function X(e){const t=e.source.platform??"default",r={...e,source:{...e.source,release:{[t]:"4.3.1"}}};return Buffer.from(JSON.stringify(r))}var H={title:"Default publish",description:"An event is published to the configured Pub/Sub topic with the full JSON event as the message body and no ordering key.",in:V,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:X(V)}]]},Y={title:"Topic override",description:"A mapping rule overrides the destination default topic so order events are published to a dedicated topic.",in:V,mapping:{settings:{topic:"orders"}},out:[["topic","orders",{messageOrdering:!1}],["publishMessage","orders",{data:X(V)}]]},Z={title:"Ordering key from user",description:"A mapping resolves the ordering key from event.user.id, enabling per-user ordering for this publish.",in:V,mapping:{settings:{orderingKey:"user.id"}},out:[["topic","events",{messageOrdering:!0}],["publishMessage","events",{data:X(V),orderingKey:"usr-789"}]]},ee={title:"Mapped attributes",description:"A mapping resolves a per-event attribute map, here exposing entity and action as Pub/Sub attributes for routing in subscribers.",in:V,mapping:{settings:{attributes:{entity:"entity",action:"action"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:X(V),attributes:{entity:"order",action:"complete"}}]]},te={title:"Mapped payload",description:"A data mapping transforms the event payload before publish. The rewritten object becomes the Pub/Sub message body.",in:V,mapping:{data:{map:{order_id:"data.id",revenue:"data.total",currency:"data.currency"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:Buffer.from(JSON.stringify({order_id:"ORD-500",revenue:199.99,currency:"EUR"}))}]]},re={title:"Page view",description:"A page view is published to the default topic with no ordering key, demonstrating the simplest publish path.",in:$,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:X($)}]]},se={"auth-methods":{text:'Supports three auth methods: SA key file via bigquery options ({ bigquery: { keyFilename: "./sa.json" } }), Application Default Credentials (automatic on GCP infrastructure — just provide projectId), or a pre-configured BigQuery client instance (client option). See settings schema for all options.',code:[{lang:"json",code:'{ "settings": { "projectId": "my-project", "bigquery": { "keyFilename": "./sa.json" } } }'},{lang:"json",code:'{ "settings": { "projectId": "my-project" } }'}]},"storage-format":{text:'All events are stored in a single table. Scalar fields (strings, numbers, booleans) are stored as-is. Nested objects and arrays are JSON-stringified automatically. Defaults: dataset "walkeros", table "events", location "EU" — all overridable via settings.'},"query-json-columns":{text:"Nested event fields (data, context, globals, user) are stored as JSON strings. Use BigQuery JSON_EXTRACT_SCALAR to query them. Field paths follow the walkerOS event structure.",code:[{lang:"sql",code:"SELECT JSON_EXTRACT_SCALAR(data, '$.total') AS total FROM `project.walkeros.events` WHERE entity = 'order'"}]},"troubleshoot-empty-table":{text:"Events not appearing? Common causes: projectId doesn't match GCP project, dataset doesn't exist yet (create via BigQuery console or bq CLI before first push), or SA key lacks bigquery.dataEditor role. The destination validates client/datasetId/tableId at push time but GCP permission errors surface from the BigQuery SDK."}};export{S as examples,se as hints,K as pubsubExamples,r as schemas};//# sourceMappingURL=dev.mjs.map
1
+ var e=Object.defineProperty,t=(t,r)=>{for(var s in r)e(t,s,{get:r[s],enumerable:!0})},r={};t(r,{mapping:()=>c,pubsubMapping:()=>f,pubsubSettings:()=>y,pubsubSetup:()=>v,settings:()=>l});import{zodToSchema as s}from"@walkeros/core/dev";import{z as i}from"@walkeros/core/dev";var o=i.object({client:i.any().describe("Google Cloud BigQuery client instance (like new BigQuery({ projectId, keyFilename }))").optional(),projectId:i.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),datasetId:i.string().min(1).default("walkerOS").describe("BigQuery dataset ID where events will be stored (like walker_events)"),tableId:i.string().min(1).default("events").describe("BigQuery table ID for event storage (like events)"),location:i.string().default("EU").describe("Geographic location for the BigQuery dataset (like US)"),bigquery:i.any().describe('Additional BigQuery client configuration options (like { keyFilename: "path/to/key.json" })').optional()});import{z as a}from"@walkeros/core/dev";var n=a.object({}),l=s(o),c=s(n);import{zodToSchema as d}from"@walkeros/core/dev";import{z as p}from"@walkeros/core/dev";var u=p.object({client:p.any().describe("Google Cloud Pub/Sub client instance (like new PubSub({ projectId, keyFilename }))").optional(),projectId:p.string().min(1).describe("Google Cloud Project ID (like my-gcp-project)"),topic:p.string().min(1).describe("Pub/Sub topic short name (like events). The full resource name projects/<projectId>/topics/<topic> is built by the SDK."),credentials:p.any().describe("Service account credentials as a JSON string or an object with client_email and private_key. Default: Application Default Credentials (ADC). (deprecated: use config.credentials)").optional(),apiEndpoint:p.string().describe("Override Pub/Sub API endpoint. Useful for the local emulator (like localhost:8085).").optional(),orderingKey:p.any().describe("Mapping value resolved per-event. Truthy enables per-key ordering for the publish.").optional(),attributes:p.any().describe("Default per-event attribute map merged into every published message. Mapping.Map shape.").optional()});import{z as g}from"@walkeros/core/dev";var m=g.object({topic:g.string().describe("Per-rule topic override. Falls back to settings.topic if absent.").optional(),orderingKey:g.any().describe("Per-rule ordering-key Mapping.Value. Overrides settings.orderingKey when set.").optional(),attributes:g.any().describe("Per-rule attribute Mapping.Map merged on top of settings.attributes.").optional()});import{z as b}from"@walkeros/core/dev";var h=b.object({messageStoragePolicy:b.object({allowedPersistenceRegions:b.array(b.string()).describe("Geographic regions for at-rest message storage. Default: EU multi-region (eu-west1, eu-west3, eu-west4).")}).describe("Topic-level message storage policy.").optional(),messageRetentionDuration:b.object({seconds:b.number().describe("Retention window in seconds. Default: project default.")}).describe("Topic-level retention configuration.").optional(),kmsKeyName:b.string().describe("Customer-managed encryption key (CMEK) resource name. Optional.").optional(),labels:b.record(b.string(),b.string()).describe("Topic labels for organization and billing.").optional()}),y=d(u),f=d(m),v=d(h),S={};t(S,{env:()=>w,step:()=>x});var w={};t(w,{push:()=>R,simulation:()=>J});import{EventEmitter as k}from"events";var j=[],O=null,A=null,C=null,D=null,P=class extends k{streamId;constructor(e){super(),this.streamId=e}getStreamId(){return this.streamId}onConnectionError(e){return j.push({method:"onConnectionError",args:[]}),this.on("error",e),{off:()=>{this.off("error",e)}}}__emitConnectionError(e){this.emit("error",e)}},I=[],E={convertStorageSchemaToProto2Descriptor:(e,t)=>(j.push({method:"adapt.convertStorageSchemaToProto2Descriptor",args:[e,t]}),{name:"root",field:[]})},N={WriterClient:class{constructor(e){j.push({method:"WriterClient.ctor",args:[e]})}async createStreamConnection(e,t){if("DEFAULT"!==e.streamId)throw new Error(`mock createStreamConnection: expected streamId='DEFAULT', got ${JSON.stringify(e)}`);j.push({method:"createStreamConnection",args:[e,t]});const r=D;if(null!==r)throw D=null,r;const s=new P(`${e.destinationTable}/streams/_default`);return I.push(s),s}async getWriteStream(e,t){return j.push({method:"getWriteStream",args:[e,t]}),{tableSchema:{fields:[]}}}close(){j.push({method:"WriterClient.close",args:[]})}},JSONWriter:class{constructor(e){j.push({method:"JSONWriter.ctor",args:[e]})}appendRows(e,t){j.push({method:"appendRows",args:[e,t]});const r=A;if(null!==r)throw A=null,r;const s=O;O=null;const i=C;return C=null,{getResult:async()=>{if(null!==i)throw i;return{appendResult:{offset:{value:"0"}},rowErrors:s??[],writeStream:"projects/p/datasets/d/tables/t/streams/_default"}}}}close(){j.push({method:"JSONWriter.close",args:[]})}},DefaultStream:"DEFAULT"},T=()=>{};var R={get BigQuery(){return class{calls;options;constructor(e){this.options=e,this.calls=[]}dataset(e){return this.calls.push({method:"dataset",args:[e]}),this}table(e){return this.calls.push({method:"table",args:[e]}),this}async insert(e){return this.calls.push({method:"insert",args:[e]}),Promise.resolve()}get mockFn(){return T}}},get WriterClient(){return N.WriterClient},get JSONWriter(){return N.JSONWriter},get adapt(){return E},get managedwriterModule(){return N}},J=["BigQuery","WriterClient","JSONWriter","adapt"],x={};t(x,{pageView:()=>_,purchase:()=>U});import{getEvent as M}from"@walkeros/core";function W(e){return null==e?null:"object"==typeof e?Array.isArray(e)&&0===e.length?null:Array.isArray(e)||0!==Object.keys(e).length?JSON.stringify(e):null:JSON.stringify(e)}function B(e){return function(e){return{name:e.name,data:W(e.data),context:W(e.context),globals:W(e.globals),custom:W(e.custom),user:W(e.user),nested:W(e.nested),consent:W(e.consent),id:e.id,trigger:e.trigger,entity:e.entity,action:e.action,timestamp:1e3*new Date(e.timestamp).getTime(),timing:e.timing,source:W(e.source)}}(e)}var Q=M("page view",{timestamp:1700001100,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server"}}),_={title:"Page view",description:"A page view is appended as one row through the BigQuery Storage Write API JSONWriter. Nested objects/arrays in data, source, etc. are JSON-stringified by eventToRow.",in:Q,mapping:void 0,out:[["appendRows",[B(Q)]]]},F=M("order complete",{timestamp:1700001101,data:{id:"ORD-500",total:199.99,items:[{sku:"SKU-1",qty:2}]},source:{type:"express",platform:"server"}}),U={title:"Purchase",description:"An order event is appended as a single row through JSONWriter.appendRows. The entire nested data object (including arrays like items) is JSON-stringified into the data column via eventToRow().",in:F,mapping:void 0,out:[["appendRows",[B(F)]]]},K={};t(K,{env:()=>q,step:()=>L});var q={};t(q,{simulation:()=>G});var G=["PubSub"],L={};t(L,{defaultPush:()=>H,mappedAttributes:()=>ee,mappedData:()=>te,mappedOrderingKey:()=>Z,mappedTopic:()=>Y,pageView:()=>re});import{getEvent as z}from"@walkeros/core";var V=z("order complete",{timestamp:1700001100,data:{id:"ORD-500",total:199.99,currency:"EUR"},user:{id:"usr-789"},source:{type:"express",platform:"server",trace:"1a2b3c4d5e6f70819a2b3c4d5e6f7081",count:1}}),$=z("page view",{timestamp:1700001101,data:{title:"Documentation",url:"https://example.com/docs"},source:{type:"express",platform:"server",trace:"9f8e7d6c5b4a39281706f5e4d3c2b1a0",count:1}});function X(e){const t=e.source.platform??"default",r={...e,source:{...e.source,release:{[t]:"4.3.2"}}};return Buffer.from(JSON.stringify(r))}var H={title:"Default publish",description:"An event is published to the configured Pub/Sub topic with the full JSON event as the message body and no ordering key.",in:V,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:X(V)}]]},Y={title:"Topic override",description:"A mapping rule overrides the destination default topic so order events are published to a dedicated topic.",in:V,mapping:{settings:{topic:"orders"}},out:[["topic","orders",{messageOrdering:!1}],["publishMessage","orders",{data:X(V)}]]},Z={title:"Ordering key from user",description:"A mapping resolves the ordering key from event.user.id, enabling per-user ordering for this publish.",in:V,mapping:{settings:{orderingKey:"user.id"}},out:[["topic","events",{messageOrdering:!0}],["publishMessage","events",{data:X(V),orderingKey:"usr-789"}]]},ee={title:"Mapped attributes",description:"A mapping resolves a per-event attribute map, here exposing entity and action as Pub/Sub attributes for routing in subscribers.",in:V,mapping:{settings:{attributes:{entity:"entity",action:"action"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:X(V),attributes:{entity:"order",action:"complete"}}]]},te={title:"Mapped payload",description:"A data mapping transforms the event payload before publish. The rewritten object becomes the Pub/Sub message body.",in:V,mapping:{data:{map:{order_id:"data.id",revenue:"data.total",currency:"data.currency"}}},out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:Buffer.from(JSON.stringify({order_id:"ORD-500",revenue:199.99,currency:"EUR"}))}]]},re={title:"Page view",description:"A page view is published to the default topic with no ordering key, demonstrating the simplest publish path.",in:$,out:[["topic","events",{messageOrdering:!1}],["publishMessage","events",{data:X($)}]]},se={"auth-methods":{text:'Supports three auth methods: SA key file via bigquery options ({ bigquery: { keyFilename: "./sa.json" } }), Application Default Credentials (automatic on GCP infrastructure — just provide projectId), or a pre-configured BigQuery client instance (client option). See settings schema for all options.',code:[{lang:"json",code:'{ "settings": { "projectId": "my-project", "bigquery": { "keyFilename": "./sa.json" } } }'},{lang:"json",code:'{ "settings": { "projectId": "my-project" } }'}]},"storage-format":{text:'All events are stored in a single table. Scalar fields (strings, numbers, booleans) are stored as-is. Nested objects and arrays are JSON-stringified automatically. Defaults: dataset "walkeros", table "events", location "EU" — all overridable via settings.'},"query-json-columns":{text:"Nested event fields (data, context, globals, user) are stored as JSON strings. Use BigQuery JSON_EXTRACT_SCALAR to query them. Field paths follow the walkerOS event structure.",code:[{lang:"sql",code:"SELECT JSON_EXTRACT_SCALAR(data, '$.total') AS total FROM `project.walkeros.events` WHERE entity = 'order'"}]},"troubleshoot-empty-table":{text:"Events not appearing? Common causes: projectId doesn't match GCP project, dataset doesn't exist yet (create via BigQuery console or bq CLI before first push), or SA key lacks bigquery.dataEditor role. The destination validates client/datasetId/tableId at push time but GCP permission errors surface from the BigQuery SDK."}};export{S as examples,se as hints,K as pubsubExamples,r as schemas};//# sourceMappingURL=dev.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/server-destination-gcp",
4
- "version": "4.3.1",
4
+ "version": "4.3.2",
5
5
  "type": "destination",
6
6
  "platform": [
7
7
  "server"
@@ -239,7 +239,7 @@
239
239
  "consent": {
240
240
  "functional": true
241
241
  },
242
- "id": "4fe3706262f3159b",
242
+ "id": "4fe4c0b9fe3ad1b3",
243
243
  "trigger": "load",
244
244
  "entity": "page",
245
245
  "action": "view",
@@ -265,7 +265,7 @@
265
265
  "user": "{\"id\":\"us3r\",\"device\":\"c00k13\",\"session\":\"s3ss10n\"}",
266
266
  "nested": "[{\"entity\":\"child\",\"data\":{\"is\":\"subordinated\"}}]",
267
267
  "consent": "{\"functional\":true}",
268
- "id": "4fe3706262f3159b",
268
+ "id": "4fe4c0b9fe3ad1b3",
269
269
  "trigger": "load",
270
270
  "entity": "page",
271
271
  "action": "view",
@@ -360,7 +360,7 @@
360
360
  "consent": {
361
361
  "functional": true
362
362
  },
363
- "id": "080071fced1d49f9",
363
+ "id": "ebcdfa7a36679097",
364
364
  "trigger": "load",
365
365
  "entity": "order",
366
366
  "action": "complete",
@@ -386,7 +386,7 @@
386
386
  "user": "{\"id\":\"us3r\",\"device\":\"c00k13\",\"session\":\"s3ss10n\"}",
387
387
  "nested": "[{\"entity\":\"product\",\"data\":{\"id\":\"ers\",\"name\":\"Everyday Ruck Snack\",\"color\":\"black\",\"size\":\"l\",\"price\":420},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]},{\"entity\":\"product\",\"data\":{\"id\":\"cc\",\"name\":\"Cool Cap\",\"size\":\"one size\",\"price\":42},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]},{\"entity\":\"gift\",\"data\":{\"name\":\"Surprise\"},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]}]",
388
388
  "consent": "{\"functional\":true}",
389
- "id": "080071fced1d49f9",
389
+ "id": "ebcdfa7a36679097",
390
390
  "trigger": "load",
391
391
  "entity": "order",
392
392
  "action": "complete",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/server-destination-gcp",
3
3
  "description": "Google Cloud Platform server destinations for walkerOS (BigQuery, Pub/Sub)",
4
- "version": "4.3.1",
4
+ "version": "4.3.2",
5
5
  "license": "MIT",
6
6
  "exports": {
7
7
  ".": {
@@ -33,8 +33,8 @@
33
33
  "@google-cloud/bigquery": "^8.1.1",
34
34
  "@google-cloud/bigquery-storage": "^5.1.0",
35
35
  "@google-cloud/pubsub": "^5.3.0",
36
- "@walkeros/core": "4.3.1",
37
- "@walkeros/server-core": "4.3.1"
36
+ "@walkeros/core": "4.3.2",
37
+ "@walkeros/server-core": "4.3.2"
38
38
  },
39
39
  "devDependencies": {},
40
40
  "repository": {