@walkeros/server-destination-gcp 0.6.0 → 0.6.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/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var mod,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,index_exports={};((target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})})(index_exports,{DestinationBigQuery:()=>types_exports,destinationBigQuery:()=>destinationBigQuery}),module.exports=(mod=index_exports,((to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to})(__defProp({},"__esModule",{value:!0}),mod));var import_bigquery=require("@google-cloud/bigquery");var e=Object.defineProperty;((t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})})({},{Level:()=>a});var e2,a=((e2=a||{})[e2.ERROR=0]="ERROR",e2[e2.INFO=1]="INFO",e2[e2.DEBUG=2]="DEBUG",e2);function A(e2){return Array.isArray(e2)}function _(e2){return"object"==typeof e2&&null!==e2&&!A(e2)&&"[object Object]"===Object.prototype.toString.call(e2)}var mapEvent=event=>Object.entries(event).reduce((acc,[key,value])=>(acc[key]=_(value)||A(value)?JSON.stringify(value):value,acc),{}),types_exports={},destinationBigQuery={type:"gcp-bigquery",config:{},async init({config:partialConfig,env:env,logger:logger}){const config=function(partialConfig={},env,logger){const settings=partialConfig.settings||{},{projectId:projectId,bigquery:bigquery}=settings;let{client:client,location:location,datasetId:datasetId,tableId:tableId}=settings;projectId||logger.throw("Config settings projectId missing"),location=location||"EU",datasetId=datasetId||"walkeros",tableId=tableId||"events";const options=bigquery||{};options.projectId=projectId;const BigQueryClass=(null==env?void 0:env.BigQuery)||import_bigquery.BigQuery;client=client||new BigQueryClass(options);const settingsConfig={...settings,client:client,projectId:projectId,location:location,datasetId:datasetId,tableId:tableId};return{...partialConfig,settings:settingsConfig}}(partialConfig,env,logger);return config},push:async(event,{config:config,mapping:mapping,data:data,collector:collector,env:env,logger:logger})=>await async function(event,{config:config,mapping:_mapping,data:data,logger:logger}){const{client:client,datasetId:datasetId,tableId:tableId}=config.settings;if(!client)return logger.throw("client is missing");if(!datasetId)return logger.throw("datasetId is missing");if(!tableId)return logger.throw("tableId is missing");let row;if(_(data))row=data;else{const now=new Date;row={...event,timestamp:event.timestamp?new Date(event.timestamp):now,createdAt:now}}const rows=[mapEvent(row)];logger.debug("Calling BigQuery API",{dataset:datasetId,table:tableId,rowCount:rows.length}),await client.dataset(datasetId).table(tableId).insert(rows),logger.debug("BigQuery API response",{ok:!0})}(event,{config:config,mapping:mapping,data:data,collector:collector,env:env,logger:logger})};//# sourceMappingURL=index.js.map
1
+ "use strict";var mod,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,index_exports={};((target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})})(index_exports,{DestinationBigQuery:()=>types_exports,destinationBigQuery:()=>destinationBigQuery}),module.exports=(mod=index_exports,((to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to})(__defProp({},"__esModule",{value:!0}),mod));var import_bigquery=require("@google-cloud/bigquery");var e=Object.defineProperty;((t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})})({},{Level:()=>u});var e2,u=((e2=u||{})[e2.ERROR=0]="ERROR",e2[e2.INFO=1]="INFO",e2[e2.DEBUG=2]="DEBUG",e2);function N(e2){return Array.isArray(e2)}function D(e2){return"object"==typeof e2&&null!==e2&&!N(e2)&&"[object Object]"===Object.prototype.toString.call(e2)}var mapEvent=event=>Object.entries(event).reduce((acc,[key,value])=>(acc[key]=D(value)||N(value)?JSON.stringify(value):value,acc),{}),types_exports={},destinationBigQuery={type:"gcp-bigquery",config:{},async init({config:partialConfig,env:env,logger:logger}){const config=function(partialConfig={},env,logger){const settings=partialConfig.settings||{},{projectId:projectId,bigquery:bigquery}=settings;let{client:client,location:location,datasetId:datasetId,tableId:tableId}=settings;projectId||logger.throw("Config settings projectId missing"),location=location||"EU",datasetId=datasetId||"walkeros",tableId=tableId||"events";const options=bigquery||{};options.projectId=projectId;const BigQueryClass=(null==env?void 0:env.BigQuery)||import_bigquery.BigQuery;client=client||new BigQueryClass(options);const settingsConfig={...settings,client:client,projectId:projectId,location:location,datasetId:datasetId,tableId:tableId};return{...partialConfig,settings:settingsConfig}}(partialConfig,env,logger);return config},push:async(event,context)=>await async function(event,{config:config,rule:_rule,data:data,logger:logger}){const{client:client,datasetId:datasetId,tableId:tableId}=config.settings;if(!client)return logger.throw("client is missing");if(!datasetId)return logger.throw("datasetId is missing");if(!tableId)return logger.throw("tableId is missing");let row;if(D(data))row=data;else{const now=new Date;row={...event,timestamp:event.timestamp?new Date(event.timestamp):now,createdAt:now}}const rows=[mapEvent(row)];logger.debug("Calling BigQuery API",{dataset:datasetId,table:tableId,rowCount:rows.length}),await client.dataset(datasetId).table(tableId).insert(rows),logger.debug("BigQuery API response",{ok:!0})}(event,context)};//# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/bigquery/config.ts","../src/bigquery/push.ts","../src/bigquery/types/index.ts","../src/bigquery/index.ts"],"sourcesContent":["// Google BigQuery\nexport { destinationBigQuery } from './bigquery';\nexport * as DestinationBigQuery from './bigquery/types';\n","import type { Config, Env, PartialConfig, Settings } from './types';\nimport type { BigQueryOptions } from '@google-cloud/bigquery';\nimport type { Logger } from '@walkeros/core';\nimport { BigQuery } from '@google-cloud/bigquery';\n\nexport function getConfig(\n partialConfig: PartialConfig = {},\n env: Env | undefined,\n logger: Logger.Instance,\n): Config {\n const settings = partialConfig.settings || ({} as Settings);\n const { projectId, bigquery } = settings;\n let { client, location, datasetId, tableId } = settings;\n\n if (!projectId) logger.throw('Config settings projectId missing');\n\n location = location || 'EU';\n datasetId = datasetId || 'walkeros';\n tableId = tableId || 'events';\n\n const options: BigQueryOptions = bigquery || {};\n options.projectId = projectId;\n\n // Use BigQuery from env if available, otherwise use real BigQuery\n const BigQueryClass = env?.BigQuery || BigQuery;\n client = client || new BigQueryClass(options);\n\n const settingsConfig: Settings = {\n ...settings,\n client,\n projectId,\n location,\n datasetId,\n tableId,\n };\n\n return { ...partialConfig, settings: settingsConfig };\n}\n","import type { WalkerOS } from '@walkeros/core';\nimport type { PushFn } from './types';\nimport { isObject, isArray } from '@walkeros/core';\n\nexport const push: PushFn = async function (\n event,\n { config, mapping: _mapping, data, logger },\n) {\n const { client, datasetId, tableId } = config.settings!;\n\n if (!client) return logger.throw('client is missing');\n if (!datasetId) return logger.throw('datasetId is missing');\n if (!tableId) return logger.throw('tableId is missing');\n\n let row: WalkerOS.AnyObject | undefined;\n\n if (isObject(data)) {\n row = data;\n } else {\n const now = new Date();\n row = {\n ...event,\n timestamp: event.timestamp ? new Date(event.timestamp) : now,\n createdAt: now,\n };\n }\n\n const rows = [mapEvent(row)];\n\n logger.debug('Calling BigQuery API', {\n dataset: datasetId,\n table: tableId,\n rowCount: rows.length,\n });\n\n await client.dataset(datasetId).table(tableId).insert(rows);\n\n logger.debug('BigQuery API response', { ok: true });\n\n return;\n};\n\nexport const mapEvent = (event: WalkerOS.AnyObject) => {\n return Object.entries(event).reduce<WalkerOS.AnyObject>(\n (acc, [key, value]) => {\n acc[key] =\n isObject(value) || isArray(value) ? JSON.stringify(value) : value;\n return acc;\n },\n {},\n );\n};\n","import type { DestinationServer } from '@walkeros/server-core';\nimport type {\n Mapping as WalkerOSMapping,\n Destination as CoreDestination,\n} from '@walkeros/core';\nimport type { BigQuery, BigQueryOptions } from '@google-cloud/bigquery';\n\nexport interface Settings {\n client: BigQuery;\n projectId: string;\n datasetId: string;\n tableId: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface InitSettings {\n projectId: string;\n client?: BigQuery;\n datasetId?: string;\n tableId?: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface Mapping {}\n\nexport interface Env extends DestinationServer.Env {\n BigQuery?: typeof BigQuery;\n}\n\nexport type Types = CoreDestination.Types<Settings, Mapping, Env, InitSettings>;\n\nexport interface Destination extends DestinationServer.Destination<Types> {\n init: DestinationServer.InitFn<Types>;\n}\n\nexport type Config = {\n settings: Settings;\n} & DestinationServer.Config<Types>;\n\nexport type InitFn = DestinationServer.InitFn<Types>;\nexport type PushFn = DestinationServer.PushFn<Types>;\n\nexport type PartialConfig = DestinationServer.PartialConfig<Types>;\n\nexport type PushEvents = DestinationServer.PushEvents<Mapping>;\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n","import type { Destination } from './types';\nimport { getConfig } from './config';\nimport { push } from './push';\n\n// Types\nexport * as DestinationBigQuery from './types';\n\nexport const destinationBigQuery: Destination = {\n type: 'gcp-bigquery',\n\n config: {},\n\n async init({ config: partialConfig, env, logger }) {\n const config = getConfig(partialConfig, env, logger);\n\n return config;\n },\n\n async push(event, { config, mapping, data, collector, env, logger }) {\n return await push(event, { config, mapping, data, collector, env, logger });\n },\n};\n\nexport default destinationBigQuery;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,sBAAyB;AAElB,SAAS,UACd,gBAA+B,CAAC,GAChC,KACA,QACQ;AACR,QAAM,WAAW,cAAc,YAAa,CAAC;AAC7C,QAAM,EAAE,WAAW,SAAS,IAAI;AAChC,MAAI,EAAE,QAAQ,UAAU,WAAW,QAAQ,IAAI;AAE/C,MAAI,CAAC,UAAW,QAAO,MAAM,mCAAmC;AAEhE,aAAW,YAAY;AACvB,cAAY,aAAa;AACzB,YAAU,WAAW;AAErB,QAAM,UAA2B,YAAY,CAAC;AAC9C,UAAQ,YAAY;AAGpB,QAAM,iBAAgB,2BAAK,aAAY;AACvC,WAAS,UAAU,IAAI,cAAc,OAAO;AAE5C,QAAM,iBAA2B;AAAA,IAC/B,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,eAAe,UAAU,eAAe;AACtD;A;;;;;;;;;;;;;;;;ACjCO,IAAM,OAAe,eAC1B,OACA,EAAE,QAAQ,SAAS,UAAU,MAAM,OAAO,GAC1C;AACA,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAAI,OAAO;AAE9C,MAAI,CAAC,OAAQ,QAAO,OAAO,MAAM,mBAAmB;AACpD,MAAI,CAAC,UAAW,QAAO,OAAO,MAAM,sBAAsB;AAC1D,MAAI,CAAC,QAAS,QAAO,OAAO,MAAM,oBAAoB;AAEtD,MAAI;AAEJ,MAAI,EAAS,IAAI,GAAG;AAClB,UAAM;AAAA,EACR,OAAO;AACL,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,IAAI;AAAA,MACzD,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,OAAO,CAAC,SAAS,GAAG,CAAC;AAE3B,SAAO,MAAM,wBAAwB;AAAA,IACnC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU,KAAK;AAAA,EACjB,CAAC;AAED,QAAM,OAAO,QAAQ,SAAS,EAAE,MAAM,OAAO,EAAE,OAAO,IAAI;AAE1D,SAAO,MAAM,yBAAyB,EAAE,IAAI,KAAK,CAAC;AAElD;AACF;AAEO,IAAM,WAAW,CAAC,UAA8B;AACrD,SAAO,OAAO,QAAQ,KAAK,EAAE;AAAA,IAC3B,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,UAAI,GAAG,IACL,EAAS,KAAK,KAAK,EAAQ,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI;AAC9D,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ACnDA;;;ACOO,IAAM,sBAAmC;AAAA,EAC9C,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,MAAM,KAAK,EAAE,QAAQ,eAAe,KAAK,OAAO,GAAG;AACjD,UAAM,SAAS,UAAU,eAAe,KAAK,MAAM;AAEnD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,OAAO,EAAE,QAAQ,SAAS,MAAM,WAAW,KAAK,OAAO,GAAG;AACnE,WAAO,MAAM,KAAK,OAAO,EAAE,QAAQ,SAAS,MAAM,WAAW,KAAK,OAAO,CAAC;AAAA,EAC5E;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/bigquery/config.ts","../src/bigquery/push.ts","../src/bigquery/types/index.ts","../src/bigquery/index.ts"],"sourcesContent":["// Google BigQuery\nexport { destinationBigQuery } from './bigquery';\nexport * as DestinationBigQuery from './bigquery/types';\n","import type { Config, Env, PartialConfig, Settings } from './types';\nimport type { BigQueryOptions } from '@google-cloud/bigquery';\nimport type { Logger } from '@walkeros/core';\nimport { BigQuery } from '@google-cloud/bigquery';\n\nexport function getConfig(\n partialConfig: PartialConfig = {},\n env: Env | undefined,\n logger: Logger.Instance,\n): Config {\n const settings = partialConfig.settings || ({} as Settings);\n const { projectId, bigquery } = settings;\n let { client, location, datasetId, tableId } = settings;\n\n if (!projectId) logger.throw('Config settings projectId missing');\n\n location = location || 'EU';\n datasetId = datasetId || 'walkeros';\n tableId = tableId || 'events';\n\n const options: BigQueryOptions = bigquery || {};\n options.projectId = projectId;\n\n // Use BigQuery from env if available, otherwise use real BigQuery\n const BigQueryClass = env?.BigQuery || BigQuery;\n client = client || new BigQueryClass(options);\n\n const settingsConfig: Settings = {\n ...settings,\n client,\n projectId,\n location,\n datasetId,\n tableId,\n };\n\n return { ...partialConfig, settings: settingsConfig };\n}\n","import type { WalkerOS } from '@walkeros/core';\nimport type { PushFn } from './types';\nimport { isObject, isArray } from '@walkeros/core';\n\nexport const push: PushFn = async function (\n event,\n { config, rule: _rule, data, logger },\n) {\n const { client, datasetId, tableId } = config.settings!;\n\n if (!client) return logger.throw('client is missing');\n if (!datasetId) return logger.throw('datasetId is missing');\n if (!tableId) return logger.throw('tableId is missing');\n\n let row: WalkerOS.AnyObject | undefined;\n\n if (isObject(data)) {\n row = data;\n } else {\n const now = new Date();\n row = {\n ...event,\n timestamp: event.timestamp ? new Date(event.timestamp) : now,\n createdAt: now,\n };\n }\n\n const rows = [mapEvent(row)];\n\n logger.debug('Calling BigQuery API', {\n dataset: datasetId,\n table: tableId,\n rowCount: rows.length,\n });\n\n await client.dataset(datasetId).table(tableId).insert(rows);\n\n logger.debug('BigQuery API response', { ok: true });\n\n return;\n};\n\nexport const mapEvent = (event: WalkerOS.AnyObject) => {\n return Object.entries(event).reduce<WalkerOS.AnyObject>(\n (acc, [key, value]) => {\n acc[key] =\n isObject(value) || isArray(value) ? JSON.stringify(value) : value;\n return acc;\n },\n {},\n );\n};\n","import type { DestinationServer } from '@walkeros/server-core';\nimport type {\n Mapping as WalkerOSMapping,\n Destination as CoreDestination,\n} from '@walkeros/core';\nimport type { BigQuery, BigQueryOptions } from '@google-cloud/bigquery';\n\nexport interface Settings {\n client: BigQuery;\n projectId: string;\n datasetId: string;\n tableId: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface InitSettings {\n projectId: string;\n client?: BigQuery;\n datasetId?: string;\n tableId?: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface Mapping {}\n\nexport interface Env extends DestinationServer.Env {\n BigQuery?: typeof BigQuery;\n}\n\nexport type Types = CoreDestination.Types<Settings, Mapping, Env, InitSettings>;\n\nexport interface Destination extends DestinationServer.Destination<Types> {\n init: DestinationServer.InitFn<Types>;\n}\n\nexport type Config = {\n settings: Settings;\n} & DestinationServer.Config<Types>;\n\nexport type InitFn = DestinationServer.InitFn<Types>;\nexport type PushFn = DestinationServer.PushFn<Types>;\n\nexport type PartialConfig = DestinationServer.PartialConfig<Types>;\n\nexport type PushEvents = DestinationServer.PushEvents<Mapping>;\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n","import type { Destination } from './types';\nimport { getConfig } from './config';\nimport { push } from './push';\n\n// Types\nexport * as DestinationBigQuery from './types';\n\nexport const destinationBigQuery: Destination = {\n type: 'gcp-bigquery',\n\n config: {},\n\n async init({ config: partialConfig, env, logger }) {\n const config = getConfig(partialConfig, env, logger);\n\n return config;\n },\n\n async push(event, context) {\n return await push(event, context);\n },\n};\n\nexport default destinationBigQuery;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,sBAAyB;AAElB,SAAS,UACd,gBAA+B,CAAC,GAChC,KACA,QACQ;AACR,QAAM,WAAW,cAAc,YAAa,CAAC;AAC7C,QAAM,EAAE,WAAW,SAAS,IAAI;AAChC,MAAI,EAAE,QAAQ,UAAU,WAAW,QAAQ,IAAI;AAE/C,MAAI,CAAC,UAAW,QAAO,MAAM,mCAAmC;AAEhE,aAAW,YAAY;AACvB,cAAY,aAAa;AACzB,YAAU,WAAW;AAErB,QAAM,UAA2B,YAAY,CAAC;AAC9C,UAAQ,YAAY;AAGpB,QAAM,iBAAgB,2BAAK,aAAY;AACvC,WAAS,UAAU,IAAI,cAAc,OAAO;AAE5C,QAAM,iBAA2B;AAAA,IAC/B,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,eAAe,UAAU,eAAe;AACtD;A;;;;;;;;;;;;;;;;ACjCO,IAAM,OAAe,eAC1B,OACA,EAAE,QAAQ,MAAM,OAAO,MAAM,OAAO,GACpC;AACA,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAAI,OAAO;AAE9C,MAAI,CAAC,OAAQ,QAAO,OAAO,MAAM,mBAAmB;AACpD,MAAI,CAAC,UAAW,QAAO,OAAO,MAAM,sBAAsB;AAC1D,MAAI,CAAC,QAAS,QAAO,OAAO,MAAM,oBAAoB;AAEtD,MAAI;AAEJ,MAAI,EAAS,IAAI,GAAG;AAClB,UAAM;AAAA,EACR,OAAO;AACL,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,IAAI;AAAA,MACzD,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,OAAO,CAAC,SAAS,GAAG,CAAC;AAE3B,SAAO,MAAM,wBAAwB;AAAA,IACnC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU,KAAK;AAAA,EACjB,CAAC;AAED,QAAM,OAAO,QAAQ,SAAS,EAAE,MAAM,OAAO,EAAE,OAAO,IAAI;AAE1D,SAAO,MAAM,yBAAyB,EAAE,IAAI,KAAK,CAAC;AAElD;AACF;AAEO,IAAM,WAAW,CAAC,UAA8B;AACrD,SAAO,OAAO,QAAQ,KAAK,EAAE;AAAA,IAC3B,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,UAAI,GAAG,IACL,EAAS,KAAK,KAAK,EAAQ,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI;AAC9D,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ACnDA;;;ACOO,IAAM,sBAAmC;AAAA,EAC9C,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,MAAM,KAAK,EAAE,QAAQ,eAAe,KAAK,OAAO,GAAG;AACjD,UAAM,SAAS,UAAU,eAAe,KAAK,MAAM;AAEnD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,OAAO,SAAS;AACzB,WAAO,MAAM,KAAK,OAAO,OAAO;AAAA,EAClC;AACF;","names":[]}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{BigQuery}from"@google-cloud/bigquery";var e=Object.defineProperty;((t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})})({},{Level:()=>a});var e2,a=((e2=a||{})[e2.ERROR=0]="ERROR",e2[e2.INFO=1]="INFO",e2[e2.DEBUG=2]="DEBUG",e2);function A(e2){return Array.isArray(e2)}function _(e2){return"object"==typeof e2&&null!==e2&&!A(e2)&&"[object Object]"===Object.prototype.toString.call(e2)}var mapEvent=event=>Object.entries(event).reduce((acc,[key,value])=>(acc[key]=_(value)||A(value)?JSON.stringify(value):value,acc),{}),types_exports={},destinationBigQuery={type:"gcp-bigquery",config:{},async init({config:partialConfig,env:env,logger:logger}){const config=function(partialConfig={},env,logger){const settings=partialConfig.settings||{},{projectId:projectId,bigquery:bigquery}=settings;let{client:client,location:location,datasetId:datasetId,tableId:tableId}=settings;projectId||logger.throw("Config settings projectId missing"),location=location||"EU",datasetId=datasetId||"walkeros",tableId=tableId||"events";const options=bigquery||{};options.projectId=projectId;const BigQueryClass=(null==env?void 0:env.BigQuery)||BigQuery;client=client||new BigQueryClass(options);const settingsConfig={...settings,client:client,projectId:projectId,location:location,datasetId:datasetId,tableId:tableId};return{...partialConfig,settings:settingsConfig}}(partialConfig,env,logger);return config},push:async(event,{config:config,mapping:mapping,data:data,collector:collector,env:env,logger:logger})=>await async function(event,{config:config,mapping:_mapping,data:data,logger:logger}){const{client:client,datasetId:datasetId,tableId:tableId}=config.settings;if(!client)return logger.throw("client is missing");if(!datasetId)return logger.throw("datasetId is missing");if(!tableId)return logger.throw("tableId is missing");let row;if(_(data))row=data;else{const now=new Date;row={...event,timestamp:event.timestamp?new Date(event.timestamp):now,createdAt:now}}const rows=[mapEvent(row)];logger.debug("Calling BigQuery API",{dataset:datasetId,table:tableId,rowCount:rows.length}),await client.dataset(datasetId).table(tableId).insert(rows),logger.debug("BigQuery API response",{ok:!0})}(event,{config:config,mapping:mapping,data:data,collector:collector,env:env,logger:logger})};export{types_exports as DestinationBigQuery,destinationBigQuery};//# sourceMappingURL=index.mjs.map
1
+ import{BigQuery}from"@google-cloud/bigquery";var e=Object.defineProperty;((t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})})({},{Level:()=>u});var e2,u=((e2=u||{})[e2.ERROR=0]="ERROR",e2[e2.INFO=1]="INFO",e2[e2.DEBUG=2]="DEBUG",e2);function N(e2){return Array.isArray(e2)}function D(e2){return"object"==typeof e2&&null!==e2&&!N(e2)&&"[object Object]"===Object.prototype.toString.call(e2)}var mapEvent=event=>Object.entries(event).reduce((acc,[key,value])=>(acc[key]=D(value)||N(value)?JSON.stringify(value):value,acc),{}),types_exports={},destinationBigQuery={type:"gcp-bigquery",config:{},async init({config:partialConfig,env:env,logger:logger}){const config=function(partialConfig={},env,logger){const settings=partialConfig.settings||{},{projectId:projectId,bigquery:bigquery}=settings;let{client:client,location:location,datasetId:datasetId,tableId:tableId}=settings;projectId||logger.throw("Config settings projectId missing"),location=location||"EU",datasetId=datasetId||"walkeros",tableId=tableId||"events";const options=bigquery||{};options.projectId=projectId;const BigQueryClass=(null==env?void 0:env.BigQuery)||BigQuery;client=client||new BigQueryClass(options);const settingsConfig={...settings,client:client,projectId:projectId,location:location,datasetId:datasetId,tableId:tableId};return{...partialConfig,settings:settingsConfig}}(partialConfig,env,logger);return config},push:async(event,context)=>await async function(event,{config:config,rule:_rule,data:data,logger:logger}){const{client:client,datasetId:datasetId,tableId:tableId}=config.settings;if(!client)return logger.throw("client is missing");if(!datasetId)return logger.throw("datasetId is missing");if(!tableId)return logger.throw("tableId is missing");let row;if(D(data))row=data;else{const now=new Date;row={...event,timestamp:event.timestamp?new Date(event.timestamp):now,createdAt:now}}const rows=[mapEvent(row)];logger.debug("Calling BigQuery API",{dataset:datasetId,table:tableId,rowCount:rows.length}),await client.dataset(datasetId).table(tableId).insert(rows),logger.debug("BigQuery API response",{ok:!0})}(event,context)};export{types_exports as DestinationBigQuery,destinationBigQuery};//# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bigquery/config.ts","../src/bigquery/push.ts","../src/bigquery/types/index.ts","../src/bigquery/index.ts"],"sourcesContent":["import type { Config, Env, PartialConfig, Settings } from './types';\nimport type { BigQueryOptions } from '@google-cloud/bigquery';\nimport type { Logger } from '@walkeros/core';\nimport { BigQuery } from '@google-cloud/bigquery';\n\nexport function getConfig(\n partialConfig: PartialConfig = {},\n env: Env | undefined,\n logger: Logger.Instance,\n): Config {\n const settings = partialConfig.settings || ({} as Settings);\n const { projectId, bigquery } = settings;\n let { client, location, datasetId, tableId } = settings;\n\n if (!projectId) logger.throw('Config settings projectId missing');\n\n location = location || 'EU';\n datasetId = datasetId || 'walkeros';\n tableId = tableId || 'events';\n\n const options: BigQueryOptions = bigquery || {};\n options.projectId = projectId;\n\n // Use BigQuery from env if available, otherwise use real BigQuery\n const BigQueryClass = env?.BigQuery || BigQuery;\n client = client || new BigQueryClass(options);\n\n const settingsConfig: Settings = {\n ...settings,\n client,\n projectId,\n location,\n datasetId,\n tableId,\n };\n\n return { ...partialConfig, settings: settingsConfig };\n}\n","import type { WalkerOS } from '@walkeros/core';\nimport type { PushFn } from './types';\nimport { isObject, isArray } from '@walkeros/core';\n\nexport const push: PushFn = async function (\n event,\n { config, mapping: _mapping, data, logger },\n) {\n const { client, datasetId, tableId } = config.settings!;\n\n if (!client) return logger.throw('client is missing');\n if (!datasetId) return logger.throw('datasetId is missing');\n if (!tableId) return logger.throw('tableId is missing');\n\n let row: WalkerOS.AnyObject | undefined;\n\n if (isObject(data)) {\n row = data;\n } else {\n const now = new Date();\n row = {\n ...event,\n timestamp: event.timestamp ? new Date(event.timestamp) : now,\n createdAt: now,\n };\n }\n\n const rows = [mapEvent(row)];\n\n logger.debug('Calling BigQuery API', {\n dataset: datasetId,\n table: tableId,\n rowCount: rows.length,\n });\n\n await client.dataset(datasetId).table(tableId).insert(rows);\n\n logger.debug('BigQuery API response', { ok: true });\n\n return;\n};\n\nexport const mapEvent = (event: WalkerOS.AnyObject) => {\n return Object.entries(event).reduce<WalkerOS.AnyObject>(\n (acc, [key, value]) => {\n acc[key] =\n isObject(value) || isArray(value) ? JSON.stringify(value) : value;\n return acc;\n },\n {},\n );\n};\n","import type { DestinationServer } from '@walkeros/server-core';\nimport type {\n Mapping as WalkerOSMapping,\n Destination as CoreDestination,\n} from '@walkeros/core';\nimport type { BigQuery, BigQueryOptions } from '@google-cloud/bigquery';\n\nexport interface Settings {\n client: BigQuery;\n projectId: string;\n datasetId: string;\n tableId: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface InitSettings {\n projectId: string;\n client?: BigQuery;\n datasetId?: string;\n tableId?: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface Mapping {}\n\nexport interface Env extends DestinationServer.Env {\n BigQuery?: typeof BigQuery;\n}\n\nexport type Types = CoreDestination.Types<Settings, Mapping, Env, InitSettings>;\n\nexport interface Destination extends DestinationServer.Destination<Types> {\n init: DestinationServer.InitFn<Types>;\n}\n\nexport type Config = {\n settings: Settings;\n} & DestinationServer.Config<Types>;\n\nexport type InitFn = DestinationServer.InitFn<Types>;\nexport type PushFn = DestinationServer.PushFn<Types>;\n\nexport type PartialConfig = DestinationServer.PartialConfig<Types>;\n\nexport type PushEvents = DestinationServer.PushEvents<Mapping>;\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n","import type { Destination } from './types';\nimport { getConfig } from './config';\nimport { push } from './push';\n\n// Types\nexport * as DestinationBigQuery from './types';\n\nexport const destinationBigQuery: Destination = {\n type: 'gcp-bigquery',\n\n config: {},\n\n async init({ config: partialConfig, env, logger }) {\n const config = getConfig(partialConfig, env, logger);\n\n return config;\n },\n\n async push(event, { config, mapping, data, collector, env, logger }) {\n return await push(event, { config, mapping, data, collector, env, logger });\n },\n};\n\nexport default destinationBigQuery;\n"],"mappings":";AAGA,SAAS,gBAAgB;AAElB,SAAS,UACd,gBAA+B,CAAC,GAChC,KACA,QACQ;AACR,QAAM,WAAW,cAAc,YAAa,CAAC;AAC7C,QAAM,EAAE,WAAW,SAAS,IAAI;AAChC,MAAI,EAAE,QAAQ,UAAU,WAAW,QAAQ,IAAI;AAE/C,MAAI,CAAC,UAAW,QAAO,MAAM,mCAAmC;AAEhE,aAAW,YAAY;AACvB,cAAY,aAAa;AACzB,YAAU,WAAW;AAErB,QAAM,UAA2B,YAAY,CAAC;AAC9C,UAAQ,YAAY;AAGpB,QAAM,iBAAgB,2BAAK,aAAY;AACvC,WAAS,UAAU,IAAI,cAAc,OAAO;AAE5C,QAAM,iBAA2B;AAAA,IAC/B,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,eAAe,UAAU,eAAe;AACtD;A;;;;;;;;;;;;;;;;ACjCO,IAAM,OAAe,eAC1B,OACA,EAAE,QAAQ,SAAS,UAAU,MAAM,OAAO,GAC1C;AACA,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAAI,OAAO;AAE9C,MAAI,CAAC,OAAQ,QAAO,OAAO,MAAM,mBAAmB;AACpD,MAAI,CAAC,UAAW,QAAO,OAAO,MAAM,sBAAsB;AAC1D,MAAI,CAAC,QAAS,QAAO,OAAO,MAAM,oBAAoB;AAEtD,MAAI;AAEJ,MAAI,EAAS,IAAI,GAAG;AAClB,UAAM;AAAA,EACR,OAAO;AACL,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,IAAI;AAAA,MACzD,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,OAAO,CAAC,SAAS,GAAG,CAAC;AAE3B,SAAO,MAAM,wBAAwB;AAAA,IACnC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU,KAAK;AAAA,EACjB,CAAC;AAED,QAAM,OAAO,QAAQ,SAAS,EAAE,MAAM,OAAO,EAAE,OAAO,IAAI;AAE1D,SAAO,MAAM,yBAAyB,EAAE,IAAI,KAAK,CAAC;AAElD;AACF;AAEO,IAAM,WAAW,CAAC,UAA8B;AACrD,SAAO,OAAO,QAAQ,KAAK,EAAE;AAAA,IAC3B,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,UAAI,GAAG,IACL,EAAS,KAAK,KAAK,EAAQ,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI;AAC9D,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ACnDA;;;ACOO,IAAM,sBAAmC;AAAA,EAC9C,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,MAAM,KAAK,EAAE,QAAQ,eAAe,KAAK,OAAO,GAAG;AACjD,UAAM,SAAS,UAAU,eAAe,KAAK,MAAM;AAEnD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,OAAO,EAAE,QAAQ,SAAS,MAAM,WAAW,KAAK,OAAO,GAAG;AACnE,WAAO,MAAM,KAAK,OAAO,EAAE,QAAQ,SAAS,MAAM,WAAW,KAAK,OAAO,CAAC;AAAA,EAC5E;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/bigquery/config.ts","../src/bigquery/push.ts","../src/bigquery/types/index.ts","../src/bigquery/index.ts"],"sourcesContent":["import type { Config, Env, PartialConfig, Settings } from './types';\nimport type { BigQueryOptions } from '@google-cloud/bigquery';\nimport type { Logger } from '@walkeros/core';\nimport { BigQuery } from '@google-cloud/bigquery';\n\nexport function getConfig(\n partialConfig: PartialConfig = {},\n env: Env | undefined,\n logger: Logger.Instance,\n): Config {\n const settings = partialConfig.settings || ({} as Settings);\n const { projectId, bigquery } = settings;\n let { client, location, datasetId, tableId } = settings;\n\n if (!projectId) logger.throw('Config settings projectId missing');\n\n location = location || 'EU';\n datasetId = datasetId || 'walkeros';\n tableId = tableId || 'events';\n\n const options: BigQueryOptions = bigquery || {};\n options.projectId = projectId;\n\n // Use BigQuery from env if available, otherwise use real BigQuery\n const BigQueryClass = env?.BigQuery || BigQuery;\n client = client || new BigQueryClass(options);\n\n const settingsConfig: Settings = {\n ...settings,\n client,\n projectId,\n location,\n datasetId,\n tableId,\n };\n\n return { ...partialConfig, settings: settingsConfig };\n}\n","import type { WalkerOS } from '@walkeros/core';\nimport type { PushFn } from './types';\nimport { isObject, isArray } from '@walkeros/core';\n\nexport const push: PushFn = async function (\n event,\n { config, rule: _rule, data, logger },\n) {\n const { client, datasetId, tableId } = config.settings!;\n\n if (!client) return logger.throw('client is missing');\n if (!datasetId) return logger.throw('datasetId is missing');\n if (!tableId) return logger.throw('tableId is missing');\n\n let row: WalkerOS.AnyObject | undefined;\n\n if (isObject(data)) {\n row = data;\n } else {\n const now = new Date();\n row = {\n ...event,\n timestamp: event.timestamp ? new Date(event.timestamp) : now,\n createdAt: now,\n };\n }\n\n const rows = [mapEvent(row)];\n\n logger.debug('Calling BigQuery API', {\n dataset: datasetId,\n table: tableId,\n rowCount: rows.length,\n });\n\n await client.dataset(datasetId).table(tableId).insert(rows);\n\n logger.debug('BigQuery API response', { ok: true });\n\n return;\n};\n\nexport const mapEvent = (event: WalkerOS.AnyObject) => {\n return Object.entries(event).reduce<WalkerOS.AnyObject>(\n (acc, [key, value]) => {\n acc[key] =\n isObject(value) || isArray(value) ? JSON.stringify(value) : value;\n return acc;\n },\n {},\n );\n};\n","import type { DestinationServer } from '@walkeros/server-core';\nimport type {\n Mapping as WalkerOSMapping,\n Destination as CoreDestination,\n} from '@walkeros/core';\nimport type { BigQuery, BigQueryOptions } from '@google-cloud/bigquery';\n\nexport interface Settings {\n client: BigQuery;\n projectId: string;\n datasetId: string;\n tableId: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface InitSettings {\n projectId: string;\n client?: BigQuery;\n datasetId?: string;\n tableId?: string;\n location?: string;\n bigquery?: BigQueryOptions;\n}\n\nexport interface Mapping {}\n\nexport interface Env extends DestinationServer.Env {\n BigQuery?: typeof BigQuery;\n}\n\nexport type Types = CoreDestination.Types<Settings, Mapping, Env, InitSettings>;\n\nexport interface Destination extends DestinationServer.Destination<Types> {\n init: DestinationServer.InitFn<Types>;\n}\n\nexport type Config = {\n settings: Settings;\n} & DestinationServer.Config<Types>;\n\nexport type InitFn = DestinationServer.InitFn<Types>;\nexport type PushFn = DestinationServer.PushFn<Types>;\n\nexport type PartialConfig = DestinationServer.PartialConfig<Types>;\n\nexport type PushEvents = DestinationServer.PushEvents<Mapping>;\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n","import type { Destination } from './types';\nimport { getConfig } from './config';\nimport { push } from './push';\n\n// Types\nexport * as DestinationBigQuery from './types';\n\nexport const destinationBigQuery: Destination = {\n type: 'gcp-bigquery',\n\n config: {},\n\n async init({ config: partialConfig, env, logger }) {\n const config = getConfig(partialConfig, env, logger);\n\n return config;\n },\n\n async push(event, context) {\n return await push(event, context);\n },\n};\n\nexport default destinationBigQuery;\n"],"mappings":";AAGA,SAAS,gBAAgB;AAElB,SAAS,UACd,gBAA+B,CAAC,GAChC,KACA,QACQ;AACR,QAAM,WAAW,cAAc,YAAa,CAAC;AAC7C,QAAM,EAAE,WAAW,SAAS,IAAI;AAChC,MAAI,EAAE,QAAQ,UAAU,WAAW,QAAQ,IAAI;AAE/C,MAAI,CAAC,UAAW,QAAO,MAAM,mCAAmC;AAEhE,aAAW,YAAY;AACvB,cAAY,aAAa;AACzB,YAAU,WAAW;AAErB,QAAM,UAA2B,YAAY,CAAC;AAC9C,UAAQ,YAAY;AAGpB,QAAM,iBAAgB,2BAAK,aAAY;AACvC,WAAS,UAAU,IAAI,cAAc,OAAO;AAE5C,QAAM,iBAA2B;AAAA,IAC/B,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,eAAe,UAAU,eAAe;AACtD;A;;;;;;;;;;;;;;;;ACjCO,IAAM,OAAe,eAC1B,OACA,EAAE,QAAQ,MAAM,OAAO,MAAM,OAAO,GACpC;AACA,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAAI,OAAO;AAE9C,MAAI,CAAC,OAAQ,QAAO,OAAO,MAAM,mBAAmB;AACpD,MAAI,CAAC,UAAW,QAAO,OAAO,MAAM,sBAAsB;AAC1D,MAAI,CAAC,QAAS,QAAO,OAAO,MAAM,oBAAoB;AAEtD,MAAI;AAEJ,MAAI,EAAS,IAAI,GAAG;AAClB,UAAM;AAAA,EACR,OAAO;AACL,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,IAAI;AAAA,MACzD,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,OAAO,CAAC,SAAS,GAAG,CAAC;AAE3B,SAAO,MAAM,wBAAwB;AAAA,IACnC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU,KAAK;AAAA,EACjB,CAAC;AAED,QAAM,OAAO,QAAQ,SAAS,EAAE,MAAM,OAAO,EAAE,OAAO,IAAI;AAE1D,SAAO,MAAM,yBAAyB,EAAE,IAAI,KAAK,CAAC;AAElD;AACF;AAEO,IAAM,WAAW,CAAC,UAA8B;AACrD,SAAO,OAAO,QAAQ,KAAK,EAAE;AAAA,IAC3B,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACrB,UAAI,GAAG,IACL,EAAS,KAAK,KAAK,EAAQ,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI;AAC9D,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ACnDA;;;ACOO,IAAM,sBAAmC;AAAA,EAC9C,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,MAAM,KAAK,EAAE,QAAQ,eAAe,KAAK,OAAO,GAAG;AACjD,UAAM,SAAS,UAAU,eAAe,KAAK,MAAM;AAEnD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,OAAO,SAAS;AACzB,WAAO,MAAM,KAAK,OAAO,OAAO;AAAA,EAClC;AACF;","names":[]}