@lark-apaas/observable 1.0.4-alpha.3 → 1.0.4-alpha.5

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.cjs CHANGED
@@ -520,20 +520,20 @@ var require_errorContext = __commonJS({
520
520
  });
521
521
  exports$1.captureError = exports$1.errorContext = void 0;
522
522
  var config_1 = require_config();
523
- var context2 = null;
523
+ var context4 = null;
524
524
  function errorContext(cb) {
525
525
  if (config_1.config.useDeprecatedSynchronousErrorHandling) {
526
- var isRoot = !context2;
526
+ var isRoot = !context4;
527
527
  if (isRoot) {
528
- context2 = {
528
+ context4 = {
529
529
  errorThrown: false,
530
530
  error: null
531
531
  };
532
532
  }
533
533
  cb();
534
534
  if (isRoot) {
535
- var _a = context2, errorThrown = _a.errorThrown, error = _a.error;
536
- context2 = null;
535
+ var _a = context4, errorThrown = _a.errorThrown, error = _a.error;
536
+ context4 = null;
537
537
  if (errorThrown) {
538
538
  throw error;
539
539
  }
@@ -545,9 +545,9 @@ var require_errorContext = __commonJS({
545
545
  __name(errorContext, "errorContext");
546
546
  exports$1.errorContext = errorContext;
547
547
  function captureError(err) {
548
- if (config_1.config.useDeprecatedSynchronousErrorHandling && context2) {
549
- context2.errorThrown = true;
550
- context2.error = err;
548
+ if (config_1.config.useDeprecatedSynchronousErrorHandling && context4) {
549
+ context4.errorThrown = true;
550
+ context4.error = err;
551
551
  }
552
552
  }
553
553
  __name(captureError, "captureError");
@@ -8844,7 +8844,7 @@ __name(hrTimeToNanosNumber, "hrTimeToNanosNumber");
8844
8844
 
8845
8845
  // package.json
8846
8846
  var package_default = {
8847
- version: "1.0.4-alpha.2"};
8847
+ version: "1.0.4-alpha.4"};
8848
8848
 
8849
8849
  // src/const.ts
8850
8850
  var AppEnv = /* @__PURE__ */ (function(AppEnv2) {
@@ -8876,57 +8876,6 @@ function convertAttributesToString(attributes) {
8876
8876
  }
8877
8877
  __name(convertAttributesToString, "convertAttributesToString");
8878
8878
 
8879
- // src/core/sniping-config.ts
8880
- var SnipingConfigManager = class _SnipingConfigManager {
8881
- static {
8882
- __name(this, "SnipingConfigManager");
8883
- }
8884
- static CONFIG_HEADER_NAME = "x-force-observability-pointkill";
8885
- static config = {
8886
- logs: {
8887
- modules: []
8888
- },
8889
- traces: {
8890
- modules: []
8891
- },
8892
- metrics: {
8893
- modules: []
8894
- }
8895
- };
8896
- static getConfig() {
8897
- return _SnipingConfigManager.config;
8898
- }
8899
- static setConfig(configStr) {
8900
- console.log("configStr", configStr);
8901
- if (!configStr) return;
8902
- try {
8903
- const res = JSON.parse(configStr);
8904
- const { logs: logs2, traces, metrics } = res ?? {};
8905
- if (res) {
8906
- _SnipingConfigManager.config = {
8907
- logs: {
8908
- modules: Array.isArray(logs2?.modules) ? logs2.modules : []
8909
- },
8910
- traces: {
8911
- modules: Array.isArray(traces?.modules) ? traces.modules : []
8912
- },
8913
- metrics: {
8914
- modules: Array.isArray(metrics?.modules) ? metrics.modules : []
8915
- }
8916
- };
8917
- }
8918
- } catch (error) {
8919
- console.error("Failed to parse sniping config:", error);
8920
- }
8921
- }
8922
- static updateFromHeaders(headers) {
8923
- const snipingConfig = headers[_SnipingConfigManager.CONFIG_HEADER_NAME] || headers[_SnipingConfigManager.CONFIG_HEADER_NAME.toLowerCase()];
8924
- if (snipingConfig) {
8925
- _SnipingConfigManager.setConfig(snipingConfig);
8926
- }
8927
- }
8928
- };
8929
-
8930
8879
  // src/core/log-exporter.ts
8931
8880
  var CustomExporter = class {
8932
8881
  static {
@@ -8937,19 +8886,12 @@ var CustomExporter = class {
8937
8886
  constructor() {
8938
8887
  }
8939
8888
  export(logs2, resultCallback) {
8940
- const snipingConfig = SnipingConfigManager.getConfig();
8941
- console.log("snipingConfig", snipingConfig);
8942
- if (snipingConfig.logs.modules.includes("*")) {
8943
- resultCallback({
8944
- code: core.ExportResultCode.SUCCESS
8945
- });
8946
- return;
8947
- }
8889
+ const pointKillConfig = api.context.active().getValue(POINT_KILL_TAG);
8948
8890
  const filteredLogs = logs2.filter((log) => {
8949
- const module = log.attributes?.module;
8950
- if (module && snipingConfig.logs.modules.includes(module)) {
8951
- return false;
8952
- }
8891
+ if (!pointKillConfig) return true;
8892
+ const moduleName = log.attributes?.module;
8893
+ if (pointKillConfig.logs?.modules?.includes("*")) return false;
8894
+ if (moduleName && pointKillConfig.logs?.modules?.includes(moduleName)) return false;
8953
8895
  return true;
8954
8896
  });
8955
8897
  if (filteredLogs.length === 0) {
@@ -8969,19 +8911,23 @@ var CustomExporter = class {
8969
8911
  ...defaultResourceAttr
8970
8912
  }
8971
8913
  },
8972
- logRecords: filteredLogs.map((log) => ({
8973
- timeUnixNano: hrTimeToNanosNumber(log.hrTime),
8974
- observedTimeUnixNano: hrTimeToNanosNumber(log.hrTimeObserved),
8975
- severityNumber: log.severityNumber,
8976
- severityText: log.severityText,
8977
- body: log.body,
8978
- attributes: convertAttributesToString({
8914
+ logRecords: filteredLogs.map((log) => {
8915
+ const rawAttributes = {
8979
8916
  ...defaultAttributes,
8980
8917
  ...log.attributes ?? {}
8981
- }),
8982
- traceID: log.spanContext?.traceId,
8983
- spanID: log.spanContext?.spanId
8984
- }))
8918
+ };
8919
+ delete rawAttributes["__point_kill_logs"];
8920
+ return {
8921
+ timeUnixNano: hrTimeToNanosNumber(log.hrTime),
8922
+ observedTimeUnixNano: hrTimeToNanosNumber(log.hrTimeObserved),
8923
+ severityNumber: log.severityNumber,
8924
+ severityText: log.severityText,
8925
+ body: log.body,
8926
+ attributes: convertAttributesToString(rawAttributes),
8927
+ traceID: log.spanContext?.traceId,
8928
+ spanID: log.spanContext?.spanId
8929
+ };
8930
+ })
8985
8931
  };
8986
8932
  console.log(this.logPrefix + JSON.stringify(otlpLikeStructure) + this.logSuffix);
8987
8933
  resultCallback({
@@ -9028,25 +8974,17 @@ var CustomTraceExporter = class {
9028
8974
  tracePrefix = "force-trace-prefix";
9029
8975
  traceSuffix = "force-trace-suffix";
9030
8976
  export(spans, resultCallback) {
9031
- const snipingConfig = SnipingConfigManager.getConfig();
9032
- console.log("snipingConfig", snipingConfig);
9033
- if (snipingConfig.traces.modules.includes("*")) {
9034
- resultCallback({
9035
- code: core.ExportResultCode.SUCCESS
9036
- });
9037
- return;
9038
- }
9039
8977
  const isDev = process.env.NODE_ENV === "development";
9040
8978
  const defaultAttributes = {
9041
8979
  uuid: idGenerator.generateTraceId(),
9042
8980
  app_env: isDev ? AppEnv.Dev : AppEnv.Prod
9043
8981
  };
9044
8982
  const finalSpans = spans.filter((span) => {
8983
+ const pointKillConfig = api.context.active().getValue(POINT_KILL_TAG);
9045
8984
  if ((span.attributes ?? {})[TraceDropToken]) return false;
9046
- const module = span.attributes?.module;
9047
- if (module && snipingConfig.traces.modules.includes(module)) {
9048
- return false;
9049
- }
8985
+ if (pointKillConfig?.traces?.modules?.includes("*")) return false;
8986
+ const moduleName = span.attributes?.module;
8987
+ if (moduleName && pointKillConfig?.traces?.modules?.includes(moduleName)) return false;
9050
8988
  return true;
9051
8989
  });
9052
8990
  if (!finalSpans.length) {
@@ -9095,7 +9033,36 @@ function isObservable(input) {
9095
9033
  }
9096
9034
  __name(isObservable, "isObservable");
9097
9035
 
9036
+ // src/utils/getSnippingConfig.ts
9037
+ function processSnipConfig(configStr) {
9038
+ if (!configStr) return;
9039
+ try {
9040
+ const res = JSON.parse(configStr);
9041
+ const { logs: logs2, traces, metrics } = res ?? {};
9042
+ if (res) {
9043
+ return {
9044
+ logs: {
9045
+ modules: Array.isArray(logs2?.modules) ? logs2.modules : []
9046
+ },
9047
+ traces: {
9048
+ modules: Array.isArray(traces?.modules) ? traces.modules : []
9049
+ },
9050
+ metrics: {
9051
+ modules: Array.isArray(metrics?.modules) ? metrics.modules : []
9052
+ }
9053
+ };
9054
+ } else {
9055
+ return void 0;
9056
+ }
9057
+ } catch (error) {
9058
+ console.error("Failed to parse sniping config:", error);
9059
+ return void 0;
9060
+ }
9061
+ }
9062
+ __name(processSnipConfig, "processSnipConfig");
9063
+
9098
9064
  // src/core/sdk.ts
9065
+ var POINT_KILL_TAG = /* @__PURE__ */ Symbol("__point_kill");
9099
9066
  var AppOTelSDK = class _AppOTelSDK {
9100
9067
  static {
9101
9068
  __name(this, "AppOTelSDK");
@@ -9136,13 +9103,13 @@ var AppOTelSDK = class _AppOTelSDK {
9136
9103
  * wrapper 形式
9137
9104
  */
9138
9105
  startContext(headers, name, fn) {
9139
- SnipingConfigManager.updateFromHeaders(headers);
9140
9106
  const carrier = {};
9141
9107
  const customTraceId = headers["rpc-persist-apaas-observability-trace"];
9142
9108
  if (customTraceId && _AppOTelSDK.CUSTOM_FORMAT_REGEX.test(customTraceId)) {
9143
9109
  carrier["traceparent"] = `00-${customTraceId}-01`;
9144
9110
  }
9145
9111
  const activeContext = api.propagation.extract(api.context.active(), carrier);
9112
+ activeContext.setValue(POINT_KILL_TAG, processSnipConfig(headers["x-force-observability-pointkill"]));
9146
9113
  const tracer = api.trace.getTracer("app-core");
9147
9114
  tracer.startActiveSpan(name, {}, activeContext, (span) => {
9148
9115
  fn(span);