@atlassian/clientside-extensions-debug 2.4.1 → 2.5.0-84fa90d-kwd5ix2w

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.
Files changed (66) hide show
  1. package/dist/cjs/__mocks__/debug-state.mock.js +14 -0
  2. package/dist/cjs/__mocks__/debug-state.mock.js.map +1 -0
  3. package/dist/cjs/__mocks__/debug-subjects.mock.js +8 -0
  4. package/dist/cjs/__mocks__/debug-subjects.mock.js.map +1 -0
  5. package/dist/cjs/debug-state.js +23 -12
  6. package/dist/cjs/debug-state.js.map +1 -1
  7. package/dist/cjs/debug-subjects.js +4 -2
  8. package/dist/cjs/debug-subjects.js.map +1 -1
  9. package/dist/cjs/debug.js +3 -2
  10. package/dist/cjs/debug.js.map +1 -1
  11. package/dist/cjs/index.js +1 -0
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/logger/console.js +3 -2
  14. package/dist/cjs/logger/console.js.map +1 -1
  15. package/dist/cjs/logger/default-logger.js +7 -5
  16. package/dist/cjs/logger/default-logger.js.map +1 -1
  17. package/dist/cjs/logger/logger.js +1 -1
  18. package/dist/cjs/logger/logger.js.map +1 -1
  19. package/dist/esm/__mocks__/debug-state.mock.js +7 -0
  20. package/dist/esm/__mocks__/debug-state.mock.js.map +1 -0
  21. package/dist/esm/__mocks__/debug-subjects.mock.js +4 -0
  22. package/dist/esm/__mocks__/debug-subjects.mock.js.map +1 -0
  23. package/dist/esm/debug-state.js.map +1 -1
  24. package/dist/esm/debug-subjects.js.map +1 -1
  25. package/dist/esm/logger/console.js.map +1 -1
  26. package/dist/types/__mocks__/debug-state.mock.d.ts +8 -0
  27. package/dist/types/__mocks__/debug-state.mock.d.ts.map +1 -0
  28. package/dist/types/__mocks__/debug-subjects.mock.d.ts +5 -0
  29. package/dist/types/__mocks__/debug-subjects.mock.d.ts.map +1 -0
  30. package/dist/types/debug-state.d.ts.map +1 -1
  31. package/dist/types/logger/console.d.ts.map +1 -1
  32. package/dist/types/logger/default-logger.d.ts.map +1 -1
  33. package/lib/debug-state-env.test.ts +2 -2
  34. package/lib/debug-subjects.ts +2 -2
  35. package/lib/logger/console.ts +4 -1
  36. package/package.json +6 -5
  37. package/dist/cjs/debug-state-env.test.js +0 -63
  38. package/dist/cjs/debug-state-env.test.js.map +0 -1
  39. package/dist/cjs/debug-state.test.js +0 -66
  40. package/dist/cjs/debug-state.test.js.map +0 -1
  41. package/dist/cjs/debug-subjects.test.js +0 -35
  42. package/dist/cjs/debug-subjects.test.js.map +0 -1
  43. package/dist/cjs/debug.test.js +0 -75
  44. package/dist/cjs/debug.test.js.map +0 -1
  45. package/dist/cjs/logger/console.test.js +0 -200
  46. package/dist/cjs/logger/console.test.js.map +0 -1
  47. package/dist/esm/debug-state-env.test.js +0 -42
  48. package/dist/esm/debug-state-env.test.js.map +0 -1
  49. package/dist/esm/debug-state.test.js +0 -63
  50. package/dist/esm/debug-state.test.js.map +0 -1
  51. package/dist/esm/debug-subjects.test.js +0 -33
  52. package/dist/esm/debug-subjects.test.js.map +0 -1
  53. package/dist/esm/debug.test.js +0 -73
  54. package/dist/esm/debug.test.js.map +0 -1
  55. package/dist/esm/logger/console.test.js +0 -198
  56. package/dist/esm/logger/console.test.js.map +0 -1
  57. package/dist/types/debug-state-env.test.d.ts +0 -2
  58. package/dist/types/debug-state-env.test.d.ts.map +0 -1
  59. package/dist/types/debug-state.test.d.ts +0 -2
  60. package/dist/types/debug-state.test.d.ts.map +0 -1
  61. package/dist/types/debug-subjects.test.d.ts +0 -2
  62. package/dist/types/debug-subjects.test.d.ts.map +0 -1
  63. package/dist/types/debug.test.d.ts +0 -2
  64. package/dist/types/debug.test.d.ts.map +0 -1
  65. package/dist/types/logger/console.test.d.ts +0 -2
  66. package/dist/types/logger/console.test.d.ts.map +0 -1
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDiscoveryEnabled = exports.isValidationEnabled = exports.isLoggingEnabled = exports.isDebugEnabled = exports.observeStateChange = void 0;
4
+ const observeStateChange = jest.fn();
5
+ exports.observeStateChange = observeStateChange;
6
+ const isDebugEnabled = jest.fn();
7
+ exports.isDebugEnabled = isDebugEnabled;
8
+ const isLoggingEnabled = jest.fn();
9
+ exports.isLoggingEnabled = isLoggingEnabled;
10
+ const isValidationEnabled = jest.fn();
11
+ exports.isValidationEnabled = isValidationEnabled;
12
+ const isDiscoveryEnabled = jest.fn();
13
+ exports.isDiscoveryEnabled = isDiscoveryEnabled;
14
+ //# sourceMappingURL=debug-state.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-state.mock.js","sourceRoot":"","sources":["../../../lib/__mocks__/debug-state.mock.ts"],"names":[],"mappings":";;;AAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAM5B,gDAAkB;AAL3B,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAKJ,wCAAc;AAJ3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAIU,4CAAgB;AAH7D,MAAM,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAGyB,kDAAmB;AAFlF,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAE+C,gDAAkB","sourcesContent":["const observeStateChange = jest.fn();\nconst isDebugEnabled = jest.fn();\nconst isLoggingEnabled = jest.fn();\nconst isValidationEnabled = jest.fn();\nconst isDiscoveryEnabled = jest.fn();\n\nexport { observeStateChange, isDebugEnabled, isLoggingEnabled, isValidationEnabled, isDiscoveryEnabled };\n"]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerDebugSubject = exports.observeDebugSubject = void 0;
4
+ const observeDebugSubject = jest.fn();
5
+ exports.observeDebugSubject = observeDebugSubject;
6
+ const registerDebugSubject = jest.fn();
7
+ exports.registerDebugSubject = registerDebugSubject;
8
+ //# sourceMappingURL=debug-subjects.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-subjects.mock.js","sourceRoot":"","sources":["../../../lib/__mocks__/debug-subjects.mock.ts"],"names":[],"mappings":";;;AAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAG7B,kDAAmB;AAF5B,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAET,oDAAoB","sourcesContent":["const observeDebugSubject = jest.fn();\nconst registerDebugSubject = jest.fn();\n\nexport { observeDebugSubject, registerDebugSubject };\n"]}
@@ -27,7 +27,7 @@ const defineDebugGlobal = (previousGlobal) => {
27
27
  // In dev mode we set default loglevel to INFO
28
28
  logLevel: process.env.NODE_ENV === 'production' ? logger_1.LogLevel.error : logger_1.LogLevel.info,
29
29
  };
30
- const debugStateSubject = debug_subjects_1.registerDebugSubject("state" /* State */, () => new clientside_extensions_base_1.ReplaySubject(1));
30
+ const debugStateSubject = (0, debug_subjects_1.registerDebugSubject)("state" /* State */, () => new clientside_extensions_base_1.ReplaySubject(1));
31
31
  const properties = {
32
32
  debug: {
33
33
  get() {
@@ -117,39 +117,50 @@ const defineDebugGlobal = (previousGlobal) => {
117
117
  if (!('____c_p_d' in window) || !window.____c_p_d.__initialized) {
118
118
  defineDebugGlobal((_a = window.____c_p_d) !== null && _a !== void 0 ? _a : process.env.NODE_ENV !== 'production');
119
119
  }
120
- exports.observeStateChange = (observer) => debug_subjects_1.observeDebugSubject("state" /* State */, observer);
121
- exports.isDebugEnabled = () => {
120
+ const observeStateChange = (observer) => (0, debug_subjects_1.observeDebugSubject)("state" /* State */, observer);
121
+ exports.observeStateChange = observeStateChange;
122
+ const isDebugEnabled = () => {
122
123
  return window.____c_p_d.debug;
123
124
  };
124
- exports.isLoggingEnabled = () => {
125
+ exports.isDebugEnabled = isDebugEnabled;
126
+ const isLoggingEnabled = () => {
125
127
  return window.____c_p_d.logging;
126
128
  };
127
- exports.isValidationEnabled = () => {
129
+ exports.isLoggingEnabled = isLoggingEnabled;
130
+ const isValidationEnabled = () => {
128
131
  return window.____c_p_d.validation;
129
132
  };
130
- exports.isDiscoveryEnabled = () => {
133
+ exports.isValidationEnabled = isValidationEnabled;
134
+ const isDiscoveryEnabled = () => {
131
135
  return window.____c_p_d.discovery;
132
136
  };
137
+ exports.isDiscoveryEnabled = isDiscoveryEnabled;
133
138
  /** @since 2.1.0 */
134
- exports.getLogLevel = () => {
139
+ const getLogLevel = () => {
135
140
  const logLevel = window.____c_p_d.logLevel;
136
141
  return logLevel !== null && logLevel !== void 0 ? logLevel : logger_1.LogLevel.info;
137
142
  };
138
- exports.setDebugEnabled = (value) => {
143
+ exports.getLogLevel = getLogLevel;
144
+ const setDebugEnabled = (value) => {
139
145
  window.____c_p_d.debug = value;
140
146
  };
141
- exports.setLoggingEnabled = (value) => {
147
+ exports.setDebugEnabled = setDebugEnabled;
148
+ const setLoggingEnabled = (value) => {
142
149
  window.____c_p_d.logging = value;
143
150
  };
144
- exports.setValidationEnabled = (value) => {
151
+ exports.setLoggingEnabled = setLoggingEnabled;
152
+ const setValidationEnabled = (value) => {
145
153
  window.____c_p_d.validation = value;
146
154
  };
147
- exports.setDiscoveryEnabled = (value) => {
155
+ exports.setValidationEnabled = setValidationEnabled;
156
+ const setDiscoveryEnabled = (value) => {
148
157
  window.____c_p_d.discovery = value;
149
158
  };
159
+ exports.setDiscoveryEnabled = setDiscoveryEnabled;
150
160
  /** @since 2.1.0 */
151
- exports.setLogLevel = (value) => {
161
+ const setLogLevel = (value) => {
152
162
  const level = value.toUpperCase();
153
163
  window.____c_p_d.logLevel = level;
154
164
  };
165
+ exports.setLogLevel = setLogLevel;
155
166
  //# sourceMappingURL=debug-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug-state.js","sourceRoot":"","sources":["../../lib/debug-state.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-underscore-dangle */\n\nimport type { Observer } from '@atlassian/clientside-extensions-base';\nimport { ReplaySubject } from '@atlassian/clientside-extensions-base';\nimport { DebugSubjects, observeDebugSubject, registerDebugSubject } from './debug-subjects';\nimport { LogLevel } from './logger/logger';\n\nenum ClientExtensionDebugTypes {\n debug = 'debug',\n logging = 'logging',\n validation = 'validation',\n discovery = 'discovery',\n /** @since 2.1.0 */\n logLevel = 'logLevel',\n}\n\ntype DebugTypeKeys = Exclude<keyof typeof ClientExtensionDebugTypes, 'logLevel'>;\n\nexport type ClientExtensionDebug = {\n [key in DebugTypeKeys]: boolean;\n} & {\n [ClientExtensionDebugTypes.logLevel]: LogLevel;\n};\n\nexport type ExposedClientExtensionDebug = { [key in keyof ClientExtensionDebug]: PropertyDescriptor } & {\n __initialized: PropertyDescriptor;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // The global ____c_p_d is a primitive boolean value that holds additional properties\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_d: ExposedClientExtensionDebug;\n }\n}\n\nconst defineDebugGlobal = (previousGlobal: unknown) => {\n // initialize as boolean\n const debugGlobal = Object.create(null);\n const debugStates: ClientExtensionDebug = {\n debug: false,\n logging: false,\n validation: false,\n discovery: false,\n /** @since 2.1.0 */\n // In dev mode we set default loglevel to INFO\n logLevel: process.env.NODE_ENV === 'production' ? LogLevel.error : LogLevel.info,\n };\n\n const debugStateSubject = registerDebugSubject(DebugSubjects.State, () => new ReplaySubject(1));\n\n const properties: ExposedClientExtensionDebug = {\n debug: {\n get() {\n return debugStates.debug;\n },\n set(val: unknown) {\n debugStates.debug = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n logging: {\n get() {\n return debugStates.logging;\n },\n set(val: unknown) {\n debugStates.logging = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n validation: {\n get() {\n return debugStates.validation;\n },\n set(val: unknown) {\n debugStates.validation = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n discovery: {\n get() {\n return debugStates.discovery;\n },\n set(val: unknown) {\n debugStates.discovery = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n /** @since 2.1.0 */\n logLevel: {\n get() {\n return debugStates.logLevel;\n },\n set(val: unknown) {\n let level = String(val).toUpperCase() as LogLevel;\n\n // Handle runtime errors\n if (!Object.values(LogLevel).includes(level)) {\n level = LogLevel.info;\n }\n\n debugStates.logLevel = level;\n debugStateSubject.notify(debugStates);\n },\n },\n __initialized: { value: true, writable: false },\n };\n Object.defineProperties(debugGlobal, properties);\n\n Object.defineProperty(window, '____c_p_d', {\n configurable: true, // needed for testing :(\n get() {\n return debugGlobal;\n },\n set(val) {\n // its a boolean\n if (val === true || val === false) {\n debugGlobal.debug = val;\n debugGlobal.logging = val;\n debugGlobal.validation = val;\n debugGlobal.discovery = val;\n return;\n }\n\n // we can handle booleans - like above\n // or objects (except null) and nothing else.\n if (typeof val !== 'object' || val === null) {\n return;\n }\n\n const clientExtensionDebugKeys = Object.keys(ClientExtensionDebugTypes) as (keyof ClientExtensionDebug)[];\n\n clientExtensionDebugKeys.forEach((key) => {\n if (key in val) {\n debugGlobal[key] = val[key];\n }\n });\n },\n });\n\n // Now, we can use the previous value e.g. boolean, to set the value for all flags\n window.____c_p_d = previousGlobal as ExposedClientExtensionDebug;\n};\n\n// Register global value only once\nif (!('____c_p_d' in window) || !window.____c_p_d.__initialized) {\n defineDebugGlobal(window.____c_p_d ?? process.env.NODE_ENV !== 'production');\n}\n\nexport const observeStateChange = (observer: Observer<ClientExtensionDebug>) =>\n observeDebugSubject<ClientExtensionDebug>(DebugSubjects.State, observer);\n\nexport const isDebugEnabled = () => {\n return window.____c_p_d.debug as boolean;\n};\n\nexport const isLoggingEnabled = () => {\n return window.____c_p_d.logging as boolean;\n};\n\nexport const isValidationEnabled = () => {\n return window.____c_p_d.validation as boolean;\n};\n\nexport const isDiscoveryEnabled = () => {\n return window.____c_p_d.discovery as boolean;\n};\n\n/** @since 2.1.0 */\nexport const getLogLevel = (): LogLevel => {\n const logLevel = window.____c_p_d.logLevel as LogLevel;\n\n return logLevel ?? LogLevel.info;\n};\n\nexport const setDebugEnabled = (value: boolean) => {\n (window.____c_p_d.debug as boolean) = value;\n};\n\nexport const setLoggingEnabled = (value: boolean) => {\n (window.____c_p_d.logging as boolean) = value;\n};\n\nexport const setValidationEnabled = (value: boolean) => {\n (window.____c_p_d.validation as boolean) = value;\n};\n\nexport const setDiscoveryEnabled = (value: boolean) => {\n (window.____c_p_d.discovery as boolean) = value;\n};\n\n/** @since 2.1.0 */\nexport const setLogLevel = (value: string) => {\n const level = value.toUpperCase() as LogLevel;\n\n (window.____c_p_d.logLevel as LogLevel) = level;\n};\n"]}
1
+ {"version":3,"file":"debug-state.js","sourceRoot":"","sources":["../../lib/debug-state.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-underscore-dangle */\n\nimport type { Observer } from '@atlassian/clientside-extensions-base';\nimport { ReplaySubject } from '@atlassian/clientside-extensions-base';\nimport { DebugSubjects, observeDebugSubject, registerDebugSubject } from './debug-subjects';\nimport { LogLevel } from './logger/logger';\n\nenum ClientExtensionDebugTypes {\n debug = 'debug',\n logging = 'logging',\n validation = 'validation',\n discovery = 'discovery',\n /** @since 2.1.0 */\n logLevel = 'logLevel',\n}\n\ntype DebugTypeKeys = Exclude<keyof typeof ClientExtensionDebugTypes, 'logLevel'>;\n\nexport type ClientExtensionDebug = {\n [key in DebugTypeKeys]: boolean;\n} & {\n [ClientExtensionDebugTypes.logLevel]: LogLevel;\n};\n\nexport type ExposedClientExtensionDebug = { [key in keyof ClientExtensionDebug]: PropertyDescriptor } & {\n __initialized: PropertyDescriptor;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // The global ____c_p_d is a primitive boolean value that holds additional properties\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_d: ExposedClientExtensionDebug;\n }\n}\n\nconst defineDebugGlobal = (previousGlobal: unknown) => {\n // initialize as boolean\n const debugGlobal = Object.create(null);\n const debugStates: ClientExtensionDebug = {\n debug: false,\n logging: false,\n validation: false,\n discovery: false,\n /** @since 2.1.0 */\n // In dev mode we set default loglevel to INFO\n logLevel: process.env.NODE_ENV === 'production' ? LogLevel.error : LogLevel.info,\n };\n\n const debugStateSubject = registerDebugSubject(DebugSubjects.State, () => new ReplaySubject(1));\n\n const properties: ExposedClientExtensionDebug = {\n debug: {\n get() {\n return debugStates.debug;\n },\n set(val: unknown) {\n debugStates.debug = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n logging: {\n get() {\n return debugStates.logging;\n },\n set(val: unknown) {\n debugStates.logging = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n validation: {\n get() {\n return debugStates.validation;\n },\n set(val: unknown) {\n debugStates.validation = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n discovery: {\n get() {\n return debugStates.discovery;\n },\n set(val: unknown) {\n debugStates.discovery = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n /** @since 2.1.0 */\n logLevel: {\n get() {\n return debugStates.logLevel;\n },\n set(val: unknown) {\n let level = String(val).toUpperCase() as LogLevel;\n\n // Handle runtime errors\n if (!Object.values(LogLevel).includes(level)) {\n level = LogLevel.info;\n }\n\n debugStates.logLevel = level;\n debugStateSubject.notify(debugStates);\n },\n },\n __initialized: { value: true, writable: false },\n };\n Object.defineProperties(debugGlobal, properties);\n\n Object.defineProperty(window, '____c_p_d', {\n configurable: true, // needed for testing :(\n get() {\n return debugGlobal;\n },\n set(val) {\n // its a boolean\n if (val === true || val === false) {\n debugGlobal.debug = val;\n debugGlobal.logging = val;\n debugGlobal.validation = val;\n debugGlobal.discovery = val;\n return;\n }\n\n // we can handle booleans - like above\n // or objects (except null) and nothing else.\n if (typeof val !== 'object' || val === null) {\n return;\n }\n\n const clientExtensionDebugKeys = Object.keys(ClientExtensionDebugTypes) as (keyof ClientExtensionDebug)[];\n\n clientExtensionDebugKeys.forEach((key) => {\n if (key in val) {\n debugGlobal[key] = val[key];\n }\n });\n },\n });\n\n // Now, we can use the previous value e.g. boolean, to set the value for all flags\n window.____c_p_d = previousGlobal as ExposedClientExtensionDebug;\n};\n\n// Register global value only once\nif (!('____c_p_d' in window) || !window.____c_p_d.__initialized) {\n defineDebugGlobal(window.____c_p_d ?? process.env.NODE_ENV !== 'production');\n}\n\nexport const observeStateChange = (observer: Observer<ClientExtensionDebug>) =>\n observeDebugSubject<ClientExtensionDebug>(DebugSubjects.State, observer);\n\nexport const isDebugEnabled = () => {\n return window.____c_p_d.debug as boolean;\n};\n\nexport const isLoggingEnabled = () => {\n return window.____c_p_d.logging as boolean;\n};\n\nexport const isValidationEnabled = () => {\n return window.____c_p_d.validation as boolean;\n};\n\nexport const isDiscoveryEnabled = () => {\n return window.____c_p_d.discovery as boolean;\n};\n\n/** @since 2.1.0 */\nexport const getLogLevel = (): LogLevel => {\n const logLevel = window.____c_p_d.logLevel as LogLevel;\n\n return logLevel ?? LogLevel.info;\n};\n\nexport const setDebugEnabled = (value: boolean) => {\n (window.____c_p_d.debug as boolean) = value;\n};\n\nexport const setLoggingEnabled = (value: boolean) => {\n (window.____c_p_d.logging as boolean) = value;\n};\n\nexport const setValidationEnabled = (value: boolean) => {\n (window.____c_p_d.validation as boolean) = value;\n};\n\nexport const setDiscoveryEnabled = (value: boolean) => {\n (window.____c_p_d.discovery as boolean) = value;\n};\n\n/** @since 2.1.0 */\nexport const setLogLevel = (value: string) => {\n const level = value.toUpperCase() as LogLevel;\n\n (window.____c_p_d.logLevel as LogLevel) = level;\n};\n"]}
@@ -23,7 +23,7 @@ if (!('____c_p_s' in window) || !window.____c_p_s.__initialized) {
23
23
  * @param key
24
24
  * @param subjectFactory
25
25
  */
26
- exports.registerDebugSubject = (key, subjectFactory) => {
26
+ const registerDebugSubject = (key, subjectFactory) => {
27
27
  const debugSubjects = window.____c_p_s.subjects;
28
28
  // good old singletons - ensure we do not register the same subject twice.
29
29
  // we also can't fail as multiple instances might try to access the same, so instead we return the previously registered one.
@@ -32,11 +32,13 @@ exports.registerDebugSubject = (key, subjectFactory) => {
32
32
  }
33
33
  return debugSubjects[key];
34
34
  };
35
- exports.observeDebugSubject = (key, observer) => {
35
+ exports.registerDebugSubject = registerDebugSubject;
36
+ const observeDebugSubject = (key, observer) => {
36
37
  const debugSubjects = window.____c_p_s.subjects;
37
38
  if (!(key in debugSubjects)) {
38
39
  throw new Error(`No subject registered for key: "${key}"`);
39
40
  }
40
41
  return debugSubjects[key].subscribe(observer);
41
42
  };
43
+ exports.observeDebugSubject = observeDebugSubject;
42
44
  //# sourceMappingURL=debug-subjects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug-subjects.js","sourceRoot":"","sources":["../../lib/debug-subjects.ts"],"names":[],"mappings":";;;AAyBA,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAC7B,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAmC;QAC/C,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC/C,QAAQ,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,KAAK;SAClB;KACJ,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC;AACrC,CAAC,CAAC;AAEF,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE;IAC7D,mBAAmB,EAAE,CAAC;CACzB;AAID;;;;;GAKG;AACU,QAAA,oBAAoB,GAAG,CAChC,GAAkB,EAClB,cAAiC,EACtB,EAAE;IACb,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAyC,CAAC;IAEjF,0EAA0E;IAC1E,6HAA6H;IAC7H,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,aAAa,CAAC,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC;KACzC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEW,QAAA,mBAAmB,GAAG,CAAc,GAAkB,EAAE,QAA+B,EAAE,EAAE;IACpG,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAkD,CAAC;IAE1F,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;KAC9D;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { Observer, Subject } from '@atlassian/clientside-extensions-base';\n\ntype ExposedClientExtensionSubjects = {\n __initialized: PropertyDescriptor;\n subjects: PropertyDescriptor;\n};\n\nexport const enum DebugSubjects {\n Logger = 'logger',\n State = 'state',\n}\n\ntype DebugSubjectsMap<Subject> = {\n [key in DebugSubjects]: Subject;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_s: ExposedClientExtensionSubjects;\n }\n}\n\nconst defineSubjectGlobal = () => {\n // initialize as boolean\n const subjectGlobal = Object.create(null);\n\n const properties: ExposedClientExtensionSubjects = {\n __initialized: { value: true, writable: false },\n subjects: {\n value: subjectGlobal,\n writable: false,\n },\n };\n\n Object.defineProperties(subjectGlobal, properties);\n\n window.____c_p_s = subjectGlobal;\n};\n\nif (!('____c_p_s' in window) || !window.____c_p_s.__initialized) {\n defineSubjectGlobal();\n}\n\ntype UnpackPayloadType<SubjectType> = SubjectType extends Subject<infer U> ? U : never;\n\n/**\n * Registers a debug subject as singleton\n *\n * @param key\n * @param subjectFactory\n */\nexport const registerDebugSubject = <SubjectType extends Subject<PayloadType>, PayloadType = UnpackPayloadType<SubjectType>>(\n key: DebugSubjects,\n subjectFactory: () => SubjectType,\n): SubjectType => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<SubjectType>;\n\n // good old singletons - ensure we do not register the same subject twice.\n // we also can't fail as multiple instances might try to access the same, so instead we return the previously registered one.\n if (!(key in debugSubjects)) {\n debugSubjects[key] = subjectFactory();\n }\n\n return debugSubjects[key];\n};\n\nexport const observeDebugSubject = <PayloadType>(key: DebugSubjects, observer: Observer<PayloadType>) => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<Subject<PayloadType>>;\n\n if (!(key in debugSubjects)) {\n throw new Error(`No subject registered for key: \"${key}\"`);\n }\n\n return debugSubjects[key].subscribe(observer);\n};\n"]}
1
+ {"version":3,"file":"debug-subjects.js","sourceRoot":"","sources":["../../lib/debug-subjects.ts"],"names":[],"mappings":";;;AAyBA,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAC7B,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAmC;QAC/C,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC/C,QAAQ,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,KAAK;SAClB;KACJ,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC;AACrC,CAAC,CAAC;AAEF,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE;IAC7D,mBAAmB,EAAE,CAAC;CACzB;AAID;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,CAChC,GAAkB,EAClB,cAAiC,EACtB,EAAE;IACb,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAyC,CAAC;IAEjF,0EAA0E;IAC1E,6HAA6H;IAC7H,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,aAAa,CAAC,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC;KACzC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAbW,QAAA,oBAAoB,wBAa/B;AAEK,MAAM,mBAAmB,GAAG,CAAc,GAAkB,EAAE,QAA+B,EAAE,EAAE;IACpG,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAkD,CAAC;IAE1F,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;KAC9D;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { Observer, Subject } from '@atlassian/clientside-extensions-base';\n\ntype ExposedClientExtensionSubjects = {\n __initialized: PropertyDescriptor;\n subjects: PropertyDescriptor;\n};\n\nexport const enum DebugSubjects {\n Logger = 'logger',\n State = 'state',\n}\n\ntype DebugSubjectsMap<SubjectT> = {\n [key in DebugSubjects]: SubjectT;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_s: ExposedClientExtensionSubjects;\n }\n}\n\nconst defineSubjectGlobal = () => {\n // initialize as boolean\n const subjectGlobal = Object.create(null);\n\n const properties: ExposedClientExtensionSubjects = {\n __initialized: { value: true, writable: false },\n subjects: {\n value: subjectGlobal,\n writable: false,\n },\n };\n\n Object.defineProperties(subjectGlobal, properties);\n\n window.____c_p_s = subjectGlobal;\n};\n\nif (!('____c_p_s' in window) || !window.____c_p_s.__initialized) {\n defineSubjectGlobal();\n}\n\ntype UnpackPayloadType<SubjectType> = SubjectType extends Subject<infer U> ? U : never;\n\n/**\n * Registers a debug subject as singleton\n *\n * @param key\n * @param subjectFactory\n */\nexport const registerDebugSubject = <SubjectType extends Subject<PayloadType>, PayloadType = UnpackPayloadType<SubjectType>>(\n key: DebugSubjects,\n subjectFactory: () => SubjectType,\n): SubjectType => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<SubjectType>;\n\n // good old singletons - ensure we do not register the same subject twice.\n // we also can't fail as multiple instances might try to access the same, so instead we return the previously registered one.\n if (!(key in debugSubjects)) {\n debugSubjects[key] = subjectFactory();\n }\n\n return debugSubjects[key];\n};\n\nexport const observeDebugSubject = <PayloadType>(key: DebugSubjects, observer: Observer<PayloadType>) => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<Subject<PayloadType>>;\n\n if (!(key in debugSubjects)) {\n throw new Error(`No subject registered for key: \"${key}\"`);\n }\n\n return debugSubjects[key].subscribe(observer);\n};\n"]}
package/dist/cjs/debug.js CHANGED
@@ -4,9 +4,9 @@ exports.onDebug = void 0;
4
4
  const debug_state_1 = require("./debug-state");
5
5
  const logger_1 = require("./logger/logger");
6
6
  // eslint-disable-next-line import/prefer-default-export
7
- exports.onDebug = (callback) => {
7
+ const onDebug = (callback) => {
8
8
  // Return early if both debug and logging is disabled
9
- if (!debug_state_1.isDebugEnabled() || !debug_state_1.isLoggingEnabled()) {
9
+ if (!(0, debug_state_1.isDebugEnabled)() || !(0, debug_state_1.isLoggingEnabled)()) {
10
10
  return;
11
11
  }
12
12
  let payload;
@@ -20,4 +20,5 @@ exports.onDebug = (callback) => {
20
20
  logger_1._loggerSubject.notify(payload);
21
21
  }
22
22
  };
23
+ exports.onDebug = onDebug;
23
24
  //# sourceMappingURL=debug.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../lib/debug.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAGjE,4CAA2D;AAE3D,wDAAwD;AAC3C,QAAA,OAAO,GAAG,CAAC,QAAwB,EAAE,EAAE;IAChD,qDAAqD;IACrD,IAAI,CAAC,4BAAc,EAAE,IAAI,CAAC,8BAAgB,EAAE,EAAE;QAC1C,OAAO;KACV;IAED,IAAI,OAAkC,CAAC;IAEvC,IAAI;QACA,OAAO,GAAG,QAAQ,CAAC,iBAAQ,CAAC,CAAC;KAChC;IAAC,OAAO,CAAC,EAAE;QACR,oCAAoC;KACvC;IAED,IAAI,OAAO,EAAE;QACT,uBAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAClC;AACL,CAAC,CAAC","sourcesContent":["import { isDebugEnabled, isLoggingEnabled } from './debug-state';\n\nimport type { LoggerCallback, LoggerPayload } from './logger/logger';\nimport { _loggerSubject, LogLevel } from './logger/logger';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const onDebug = (callback: LoggerCallback) => {\n // Return early if both debug and logging is disabled\n if (!isDebugEnabled() || !isLoggingEnabled()) {\n return;\n }\n\n let payload: LoggerPayload | undefined;\n\n try {\n payload = callback(LogLevel);\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n\n if (payload) {\n _loggerSubject.notify(payload);\n }\n};\n"]}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../lib/debug.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAGjE,4CAA2D;AAE3D,wDAAwD;AACjD,MAAM,OAAO,GAAG,CAAC,QAAwB,EAAE,EAAE;IAChD,qDAAqD;IACrD,IAAI,CAAC,IAAA,4BAAc,GAAE,IAAI,CAAC,IAAA,8BAAgB,GAAE,EAAE;QAC1C,OAAO;KACV;IAED,IAAI,OAAkC,CAAC;IAEvC,IAAI;QACA,OAAO,GAAG,QAAQ,CAAC,iBAAQ,CAAC,CAAC;KAChC;IAAC,OAAO,CAAC,EAAE;QACR,oCAAoC;KACvC;IAED,IAAI,OAAO,EAAE;QACT,uBAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAClC;AACL,CAAC,CAAC;AAjBW,QAAA,OAAO,WAiBlB","sourcesContent":["import { isDebugEnabled, isLoggingEnabled } from './debug-state';\n\nimport type { LoggerCallback, LoggerPayload } from './logger/logger';\nimport { _loggerSubject, LogLevel } from './logger/logger';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const onDebug = (callback: LoggerCallback) => {\n // Return early if both debug and logging is disabled\n if (!isDebugEnabled() || !isLoggingEnabled()) {\n return;\n }\n\n let payload: LoggerPayload | undefined;\n\n try {\n payload = callback(LogLevel);\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n\n if (payload) {\n _loggerSubject.notify(payload);\n }\n};\n"]}
package/dist/cjs/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.observeStateChange = exports.setValidationEnabled = exports.setDiscoveryEnabled = exports.setLoggingEnabled = exports.setDebugEnabled = exports.isValidationEnabled = exports.isDiscoveryEnabled = exports.isLoggingEnabled = exports.isDebugEnabled = exports.consoleLogger = exports._deregisterDefaultLogger = exports.setLogger = exports.observeLogger = exports.LogLevel = exports.onDebug = void 0;
3
4
  var debug_1 = require("./debug");
4
5
  Object.defineProperty(exports, "onDebug", { enumerable: true, get: function () { return debug_1.onDebug; } });
5
6
  var logger_1 = require("./logger/logger");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;AAAA,iCAAkC;AAAzB,gGAAA,OAAO,OAAA;AAEhB,0CAA2C;AAAlC,kGAAA,QAAQ,OAAA;AAEjB,0DAIiC;AAH7B,2BAA2B,CAAC,+GAAA,aAAa,OAAA;AACzC,sBAAsB,CAAC,2GAAA,SAAS,OAAA;AAChC,0HAAA,wBAAwB,OAAA;AAG5B,4CAAwE;AAAxC,wGAAA,aAAa,OAAA;AAE7C,6CAUuB;AATnB,6GAAA,cAAc,OAAA;AACd,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AACnB,8GAAA,eAAe,OAAA;AACf,gHAAA,iBAAiB,OAAA;AACjB,kHAAA,mBAAmB,OAAA;AACnB,mHAAA,oBAAoB,OAAA;AACpB,iHAAA,kBAAkB,OAAA","sourcesContent":["export { onDebug } from './debug';\nexport type { LoggerPayload } from './logger/logger';\nexport { LogLevel } from './logger/logger';\n\nexport {\n /** @deprecated in 2.1.0 */ observeLogger,\n /** @since in 2.1.0 */ setLogger,\n _deregisterDefaultLogger,\n} from './logger/default-logger';\n\nexport { /** @since in 2.1.0 */ consoleLogger } from './logger/console';\n\nexport {\n isDebugEnabled,\n isLoggingEnabled,\n isDiscoveryEnabled,\n isValidationEnabled,\n setDebugEnabled,\n setLoggingEnabled,\n setDiscoveryEnabled,\n setValidationEnabled,\n observeStateChange,\n} from './debug-state';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAAzB,gGAAA,OAAO,OAAA;AAEhB,0CAA2C;AAAlC,kGAAA,QAAQ,OAAA;AAEjB,0DAIiC;AAH7B,2BAA2B,CAAC,+GAAA,aAAa,OAAA;AACzC,sBAAsB,CAAC,2GAAA,SAAS,OAAA;AAChC,0HAAA,wBAAwB,OAAA;AAG5B,4CAAwE;AAAxC,wGAAA,aAAa,OAAA;AAE7C,6CAUuB;AATnB,6GAAA,cAAc,OAAA;AACd,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AACnB,8GAAA,eAAe,OAAA;AACf,gHAAA,iBAAiB,OAAA;AACjB,kHAAA,mBAAmB,OAAA;AACnB,mHAAA,oBAAoB,OAAA;AACpB,iHAAA,kBAAkB,OAAA","sourcesContent":["export { onDebug } from './debug';\nexport type { LoggerPayload } from './logger/logger';\nexport { LogLevel } from './logger/logger';\n\nexport {\n /** @deprecated in 2.1.0 */ observeLogger,\n /** @since in 2.1.0 */ setLogger,\n _deregisterDefaultLogger,\n} from './logger/default-logger';\n\nexport { /** @since in 2.1.0 */ consoleLogger } from './logger/console';\n\nexport {\n isDebugEnabled,\n isLoggingEnabled,\n isDiscoveryEnabled,\n isValidationEnabled,\n setDebugEnabled,\n setLoggingEnabled,\n setDiscoveryEnabled,\n setValidationEnabled,\n observeStateChange,\n} from './debug-state';\n"]}
@@ -39,9 +39,9 @@ function shouldDisplayLog(logLevel, eventLogLevel) {
39
39
  return Array.isArray(levels) ? levels.includes(eventLogLevel) : false;
40
40
  }
41
41
  // eslint-disable-next-line import/prefer-default-export
42
- exports.consoleLogger = (payload) => {
42
+ const consoleLogger = (payload) => {
43
43
  const eventLogLevel = payload.level;
44
- const logLevel = debug_state_1.getLogLevel();
44
+ const logLevel = (0, debug_state_1.getLogLevel)();
45
45
  if (!shouldDisplayLog(logLevel, eventLogLevel)) {
46
46
  return;
47
47
  }
@@ -61,4 +61,5 @@ exports.consoleLogger = (payload) => {
61
61
  console.groupEnd();
62
62
  }
63
63
  };
64
+ exports.consoleLogger = consoleLogger;
64
65
  //# sourceMappingURL=console.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../lib/logger/console.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LoggerPayload } from './logger';\nimport { LogLevel } from './logger';\nimport { getLogLevel } from '../debug-state';\n\nconst getLoggingFromLevel = (level: LogLevel): keyof typeof console => {\n switch (level) {\n case LogLevel.error:\n return 'error';\n case LogLevel.debug:\n return 'debug';\n case LogLevel.info:\n return 'info';\n case LogLevel.warn:\n case LogLevel.deprecation:\n return 'warn';\n default:\n return 'debug';\n }\n};\n\n// Naive implementation but we can't use bitwise operators :(\nconst debugLevels = Object.values(LogLevel);\nconst errorLevels = debugLevels.filter((level) => level !== LogLevel.debug);\nconst warnLevels = errorLevels.filter((level) => level !== LogLevel.error);\nconst deprecationLevels = warnLevels.filter((level) => level !== LogLevel.warn);\nconst infoLevels = deprecationLevels.filter((level) => level !== LogLevel.deprecation);\n\nconst levelsMap: { [key: string]: string[] } = {\n [LogLevel.debug]: debugLevels,\n [LogLevel.error]: errorLevels,\n [LogLevel.warn]: warnLevels,\n [LogLevel.deprecation]: deprecationLevels,\n [LogLevel.info]: infoLevels,\n};\n\nfunction shouldDisplayLog(logLevel: LogLevel, eventLogLevel: LogLevel) {\n if (logLevel === LogLevel.debug) {\n return true;\n }\n\n const levels = levelsMap[logLevel];\n\n return Array.isArray(levels) ? levels.includes(eventLogLevel) : false;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport const consoleLogger = (payload: LoggerPayload) => {\n const eventLogLevel = payload.level;\n const logLevel = getLogLevel();\n\n if (!shouldDisplayLog(logLevel, eventLogLevel)) {\n return;\n }\n\n const consoleKey = getLoggingFromLevel(eventLogLevel);\n const deprecationWarning =\n payload.level === LogLevel.deprecation\n ? `⚠️⚠️⚠️ DEPRECATION WARNING ⚠️⚠️⚠️\n`\n : '';\n\n console[consoleKey](`${deprecationWarning}[Atlassian Client-side Extensions]: ${payload.message}`);\n\n // Verbose logging\n if (logLevel === LogLevel.debug) {\n console.groupCollapsed(' <click here for more details about above message>');\n console.log({\n components: payload.components,\n meta: payload.meta,\n });\n console.groupEnd();\n }\n};\n"]}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../lib/logger/console.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LoggerPayload } from './logger';\nimport { LogLevel } from './logger';\nimport { getLogLevel } from '../debug-state';\n\n// We need to pick the callable keys from the console object\ntype ConsoleLogsTypes = keyof Pick<typeof console, 'log' | 'warn' | 'error' | 'info' | 'debug'>;\n\nconst getLoggingFromLevel = (level: LogLevel): ConsoleLogsTypes => {\n switch (level) {\n case LogLevel.error:\n return 'error';\n case LogLevel.debug:\n return 'debug';\n case LogLevel.info:\n return 'info';\n case LogLevel.warn:\n case LogLevel.deprecation:\n return 'warn';\n default:\n return 'debug';\n }\n};\n\n// Naive implementation but we can't use bitwise operators :(\nconst debugLevels = Object.values(LogLevel);\nconst errorLevels = debugLevels.filter((level) => level !== LogLevel.debug);\nconst warnLevels = errorLevels.filter((level) => level !== LogLevel.error);\nconst deprecationLevels = warnLevels.filter((level) => level !== LogLevel.warn);\nconst infoLevels = deprecationLevels.filter((level) => level !== LogLevel.deprecation);\n\nconst levelsMap: { [key: string]: string[] } = {\n [LogLevel.debug]: debugLevels,\n [LogLevel.error]: errorLevels,\n [LogLevel.warn]: warnLevels,\n [LogLevel.deprecation]: deprecationLevels,\n [LogLevel.info]: infoLevels,\n};\n\nfunction shouldDisplayLog(logLevel: LogLevel, eventLogLevel: LogLevel) {\n if (logLevel === LogLevel.debug) {\n return true;\n }\n\n const levels = levelsMap[logLevel];\n\n return Array.isArray(levels) ? levels.includes(eventLogLevel) : false;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport const consoleLogger = (payload: LoggerPayload) => {\n const eventLogLevel = payload.level;\n const logLevel = getLogLevel();\n\n if (!shouldDisplayLog(logLevel, eventLogLevel)) {\n return;\n }\n\n const consoleKey = getLoggingFromLevel(eventLogLevel);\n const deprecationWarning =\n payload.level === LogLevel.deprecation\n ? `⚠️⚠️⚠️ DEPRECATION WARNING ⚠️⚠️⚠️\n`\n : '';\n\n console[consoleKey](`${deprecationWarning}[Atlassian Client-side Extensions]: ${payload.message}`);\n\n // Verbose logging\n if (logLevel === LogLevel.debug) {\n console.groupCollapsed(' <click here for more details about above message>');\n console.log({\n components: payload.components,\n meta: payload.meta,\n });\n console.groupEnd();\n }\n};\n"]}
@@ -10,16 +10,17 @@ const logger_1 = require("./logger");
10
10
  *
11
11
  * @deprecated
12
12
  */
13
- exports.observeLogger = (observer) => {
14
- return debug_subjects_1.observeDebugSubject("logger" /* Logger */, observer);
13
+ const observeLogger = (observer) => {
14
+ return (0, debug_subjects_1.observeDebugSubject)("logger" /* Logger */, observer);
15
15
  };
16
+ exports.observeLogger = observeLogger;
16
17
  const registerConsoleLogger = () => {
17
18
  // Singleton workaround as this module may be executed more than once.
18
19
  // We only ever want one global default logger, however.
19
20
  if (window.____c_p_d_l_d !== undefined) {
20
21
  return window.____c_p_d_l_d;
21
22
  }
22
- window.____c_p_d_l_d = exports.observeLogger(console_1.consoleLogger);
23
+ window.____c_p_d_l_d = (0, exports.observeLogger)(console_1.consoleLogger);
23
24
  return window.____c_p_d_l_d;
24
25
  };
25
26
  const deregisterLogger = () => {
@@ -35,14 +36,15 @@ exports.defaultLogger = registerConsoleLogger();
35
36
  * @param logger
36
37
  * @public
37
38
  */
38
- exports.setLogger = (logger) => {
39
+ const setLogger = (logger) => {
39
40
  if (typeof logger !== 'function') {
40
41
  throw new Error(`Client-side Extension: The provided logger needs to be a function`);
41
42
  }
42
43
  deregisterLogger();
43
44
  logger_1._loggerSubject.prune();
44
- debug_subjects_1.observeDebugSubject("logger" /* Logger */, logger);
45
+ (0, debug_subjects_1.observeDebugSubject)("logger" /* Logger */, logger);
45
46
  };
47
+ exports.setLogger = setLogger;
46
48
  const deregisterDefaultLogger = () => exports.defaultLogger.unsubscribe();
47
49
  exports._deregisterDefaultLogger = deregisterDefaultLogger;
48
50
  //# sourceMappingURL=default-logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-logger.js","sourceRoot":"","sources":["../../../lib/logger/default-logger.ts"],"names":[],"mappings":";;;AAEA,uCAA0C;AAC1C,sDAAuE;AAEvE,qCAA0C;AAS1C;;;;;GAKG;AACU,QAAA,aAAa,GAAG,CAAC,QAAiC,EAAgB,EAAE;IAC7E,OAAO,oCAAmB,wBAAsC,QAAQ,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,GAAiB,EAAE;IAC7C,sEAAsE;IACtE,wDAAwD;IACxD,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;QACpC,OAAO,MAAM,CAAC,aAAa,CAAC;KAC/B;IAED,MAAM,CAAC,aAAa,GAAG,qBAAa,CAAC,uBAAa,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,aAAa,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAS,EAAE;IAChC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;QACpC,OAAO;KACV;IAED,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC,CAAC;AAEW,QAAA,aAAa,GAAG,qBAAqB,EAAE,CAAC;AAErD;;;;;GAKG;AACU,QAAA,SAAS,GAAG,CAAC,MAA+B,EAAQ,EAAE;IAC/D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACxF;IAED,gBAAgB,EAAE,CAAC;IACnB,uBAAc,CAAC,KAAK,EAAE,CAAC;IAEvB,oCAAmB,wBAAsC,MAAM,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,qBAAa,CAAC,WAAW,EAAE,CAAC;AAG9B,2DAAwB","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { Observer, Subscription } from '@atlassian/clientside-extensions-base';\nimport { consoleLogger } from './console';\nimport { DebugSubjects, observeDebugSubject } from '../debug-subjects';\nimport type { LoggerPayload } from './logger';\nimport { _loggerSubject } from './logger';\n\ndeclare global {\n interface Window {\n // clientside extension default logging deregister\n ____c_p_d_l_d?: Subscription;\n }\n}\n\n/**\n * We need to keep and expose the \"observeLogger\" function for a legacy reason.\n * It should be removed in CSEv3\n *\n * @deprecated\n */\nexport const observeLogger = (observer: Observer<LoggerPayload>): Subscription => {\n return observeDebugSubject<LoggerPayload>(DebugSubjects.Logger, observer);\n};\n\nconst registerConsoleLogger = (): Subscription => {\n // Singleton workaround as this module may be executed more than once.\n // We only ever want one global default logger, however.\n if (window.____c_p_d_l_d !== undefined) {\n return window.____c_p_d_l_d;\n }\n\n window.____c_p_d_l_d = observeLogger(consoleLogger);\n\n return window.____c_p_d_l_d;\n};\n\nconst deregisterLogger = (): void => {\n if (window.____c_p_d_l_d === undefined) {\n return;\n }\n\n window.____c_p_d_l_d.unsubscribe();\n};\n\nexport const defaultLogger = registerConsoleLogger();\n\n/**\n * Added in CSE 2.1.0\n *\n * @param logger\n * @public\n */\nexport const setLogger = (logger: Observer<LoggerPayload>): void => {\n if (typeof logger !== 'function') {\n throw new Error(`Client-side Extension: The provided logger needs to be a function`);\n }\n\n deregisterLogger();\n _loggerSubject.prune();\n\n observeDebugSubject<LoggerPayload>(DebugSubjects.Logger, logger);\n};\n\nconst deregisterDefaultLogger = () => defaultLogger.unsubscribe();\n\n// @VisibleForTesting\nexport { deregisterDefaultLogger as _deregisterDefaultLogger };\n"]}
1
+ {"version":3,"file":"default-logger.js","sourceRoot":"","sources":["../../../lib/logger/default-logger.ts"],"names":[],"mappings":";;;AAEA,uCAA0C;AAC1C,sDAAuE;AAEvE,qCAA0C;AAS1C;;;;;GAKG;AACI,MAAM,aAAa,GAAG,CAAC,QAAiC,EAAgB,EAAE;IAC7E,OAAO,IAAA,oCAAmB,yBAAsC,QAAQ,CAAC,CAAC;AAC9E,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEF,MAAM,qBAAqB,GAAG,GAAiB,EAAE;IAC7C,sEAAsE;IACtE,wDAAwD;IACxD,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;QACpC,OAAO,MAAM,CAAC,aAAa,CAAC;KAC/B;IAED,MAAM,CAAC,aAAa,GAAG,IAAA,qBAAa,EAAC,uBAAa,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,aAAa,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAS,EAAE;IAChC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;QACpC,OAAO;KACV;IAED,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC,CAAC;AAEW,QAAA,aAAa,GAAG,qBAAqB,EAAE,CAAC;AAErD;;;;;GAKG;AACI,MAAM,SAAS,GAAG,CAAC,MAA+B,EAAQ,EAAE;IAC/D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACxF;IAED,gBAAgB,EAAE,CAAC;IACnB,uBAAc,CAAC,KAAK,EAAE,CAAC;IAEvB,IAAA,oCAAmB,yBAAsC,MAAM,CAAC,CAAC;AACrE,CAAC,CAAC;AATW,QAAA,SAAS,aASpB;AAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,qBAAa,CAAC,WAAW,EAAE,CAAC;AAG9B,2DAAwB","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { Observer, Subscription } from '@atlassian/clientside-extensions-base';\nimport { consoleLogger } from './console';\nimport { DebugSubjects, observeDebugSubject } from '../debug-subjects';\nimport type { LoggerPayload } from './logger';\nimport { _loggerSubject } from './logger';\n\ndeclare global {\n interface Window {\n // clientside extension default logging deregister\n ____c_p_d_l_d?: Subscription;\n }\n}\n\n/**\n * We need to keep and expose the \"observeLogger\" function for a legacy reason.\n * It should be removed in CSEv3\n *\n * @deprecated\n */\nexport const observeLogger = (observer: Observer<LoggerPayload>): Subscription => {\n return observeDebugSubject<LoggerPayload>(DebugSubjects.Logger, observer);\n};\n\nconst registerConsoleLogger = (): Subscription => {\n // Singleton workaround as this module may be executed more than once.\n // We only ever want one global default logger, however.\n if (window.____c_p_d_l_d !== undefined) {\n return window.____c_p_d_l_d;\n }\n\n window.____c_p_d_l_d = observeLogger(consoleLogger);\n\n return window.____c_p_d_l_d;\n};\n\nconst deregisterLogger = (): void => {\n if (window.____c_p_d_l_d === undefined) {\n return;\n }\n\n window.____c_p_d_l_d.unsubscribe();\n};\n\nexport const defaultLogger = registerConsoleLogger();\n\n/**\n * Added in CSE 2.1.0\n *\n * @param logger\n * @public\n */\nexport const setLogger = (logger: Observer<LoggerPayload>): void => {\n if (typeof logger !== 'function') {\n throw new Error(`Client-side Extension: The provided logger needs to be a function`);\n }\n\n deregisterLogger();\n _loggerSubject.prune();\n\n observeDebugSubject<LoggerPayload>(DebugSubjects.Logger, logger);\n};\n\nconst deregisterDefaultLogger = () => defaultLogger.unsubscribe();\n\n// @VisibleForTesting\nexport { deregisterDefaultLogger as _deregisterDefaultLogger };\n"]}
@@ -11,6 +11,6 @@ var LogLevel;
11
11
  LogLevel["deprecation"] = "DEPRECATION";
12
12
  LogLevel["info"] = "INFO";
13
13
  })(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
14
- const loggerSubject = debug_subjects_1.registerDebugSubject("logger" /* Logger */, () => new clientside_extensions_base_1.ReplaySubject(20));
14
+ const loggerSubject = (0, debug_subjects_1.registerDebugSubject)("logger" /* Logger */, () => new clientside_extensions_base_1.ReplaySubject(20));
15
15
  exports._loggerSubject = loggerSubject;
16
16
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../lib/logger/logger.ts"],"names":[],"mappings":";;;AAAA,sFAAsE;AACtE,sDAAwE;AAExE,IAAY,QAMX;AAND,WAAY,QAAQ;IAChB,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,uCAA2B,CAAA;IAC3B,yBAAa,CAAA;AACjB,CAAC,EANW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMnB;AAaD,MAAM,aAAa,GAAG,qCAAoB,wBAAuB,GAAG,EAAE,CAAC,IAAI,0CAAa,CAAgB,EAAE,CAAC,CAAC,CAAC;AAGnF,uCAAc","sourcesContent":["import { ReplaySubject } from '@atlassian/clientside-extensions-base';\nimport { DebugSubjects, registerDebugSubject } from '../debug-subjects';\n\nexport enum LogLevel {\n debug = 'DEBUG', // Logs all the things\n error = 'ERROR',\n warn = 'WARN',\n deprecation = 'DEPRECATION',\n info = 'INFO', // The lowest level\n}\n\nexport type LoggerCallback = (levels: typeof LogLevel) => LoggerPayload;\n\nexport type LoggerPayload = {\n level: LogLevel;\n message: string;\n components?: string | string[];\n meta?: {\n [key: string]: unknown;\n };\n};\n\nconst loggerSubject = registerDebugSubject(DebugSubjects.Logger, () => new ReplaySubject<LoggerPayload>(20));\n\n// Exported for internal use only\nexport { loggerSubject as _loggerSubject };\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../lib/logger/logger.ts"],"names":[],"mappings":";;;AAAA,sFAAsE;AACtE,sDAAwE;AAExE,IAAY,QAMX;AAND,WAAY,QAAQ;IAChB,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,uCAA2B,CAAA;IAC3B,yBAAa,CAAA;AACjB,CAAC,EANW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMnB;AAaD,MAAM,aAAa,GAAG,IAAA,qCAAoB,yBAAuB,GAAG,EAAE,CAAC,IAAI,0CAAa,CAAgB,EAAE,CAAC,CAAC,CAAC;AAGnF,uCAAc","sourcesContent":["import { ReplaySubject } from '@atlassian/clientside-extensions-base';\nimport { DebugSubjects, registerDebugSubject } from '../debug-subjects';\n\nexport enum LogLevel {\n debug = 'DEBUG', // Logs all the things\n error = 'ERROR',\n warn = 'WARN',\n deprecation = 'DEPRECATION',\n info = 'INFO', // The lowest level\n}\n\nexport type LoggerCallback = (levels: typeof LogLevel) => LoggerPayload;\n\nexport type LoggerPayload = {\n level: LogLevel;\n message: string;\n components?: string | string[];\n meta?: {\n [key: string]: unknown;\n };\n};\n\nconst loggerSubject = registerDebugSubject(DebugSubjects.Logger, () => new ReplaySubject<LoggerPayload>(20));\n\n// Exported for internal use only\nexport { loggerSubject as _loggerSubject };\n"]}
@@ -0,0 +1,7 @@
1
+ const observeStateChange = jest.fn();
2
+ const isDebugEnabled = jest.fn();
3
+ const isLoggingEnabled = jest.fn();
4
+ const isValidationEnabled = jest.fn();
5
+ const isDiscoveryEnabled = jest.fn();
6
+ export { observeStateChange, isDebugEnabled, isLoggingEnabled, isValidationEnabled, isDiscoveryEnabled };
7
+ //# sourceMappingURL=debug-state.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-state.mock.js","sourceRoot":"","sources":["../../../lib/__mocks__/debug-state.mock.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACrC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC","sourcesContent":["const observeStateChange = jest.fn();\nconst isDebugEnabled = jest.fn();\nconst isLoggingEnabled = jest.fn();\nconst isValidationEnabled = jest.fn();\nconst isDiscoveryEnabled = jest.fn();\n\nexport { observeStateChange, isDebugEnabled, isLoggingEnabled, isValidationEnabled, isDiscoveryEnabled };\n"]}
@@ -0,0 +1,4 @@
1
+ const observeDebugSubject = jest.fn();
2
+ const registerDebugSubject = jest.fn();
3
+ export { observeDebugSubject, registerDebugSubject };
4
+ //# sourceMappingURL=debug-subjects.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-subjects.mock.js","sourceRoot":"","sources":["../../../lib/__mocks__/debug-subjects.mock.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["const observeDebugSubject = jest.fn();\nconst registerDebugSubject = jest.fn();\n\nexport { observeDebugSubject, registerDebugSubject };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-state.js","sourceRoot":"","sources":["../../lib/debug-state.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-underscore-dangle */\n\nimport type { Observer } from '@atlassian/clientside-extensions-base';\nimport { ReplaySubject } from '@atlassian/clientside-extensions-base';\nimport { DebugSubjects, observeDebugSubject, registerDebugSubject } from './debug-subjects';\nimport { LogLevel } from './logger/logger';\n\nenum ClientExtensionDebugTypes {\n debug = 'debug',\n logging = 'logging',\n validation = 'validation',\n discovery = 'discovery',\n /** @since 2.1.0 */\n logLevel = 'logLevel',\n}\n\ntype DebugTypeKeys = Exclude<keyof typeof ClientExtensionDebugTypes, 'logLevel'>;\n\nexport type ClientExtensionDebug = {\n [key in DebugTypeKeys]: boolean;\n} & {\n [ClientExtensionDebugTypes.logLevel]: LogLevel;\n};\n\nexport type ExposedClientExtensionDebug = { [key in keyof ClientExtensionDebug]: PropertyDescriptor } & {\n __initialized: PropertyDescriptor;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // The global ____c_p_d is a primitive boolean value that holds additional properties\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_d: ExposedClientExtensionDebug;\n }\n}\n\nconst defineDebugGlobal = (previousGlobal: unknown) => {\n // initialize as boolean\n const debugGlobal = Object.create(null);\n const debugStates: ClientExtensionDebug = {\n debug: false,\n logging: false,\n validation: false,\n discovery: false,\n /** @since 2.1.0 */\n // In dev mode we set default loglevel to INFO\n logLevel: process.env.NODE_ENV === 'production' ? LogLevel.error : LogLevel.info,\n };\n\n const debugStateSubject = registerDebugSubject(DebugSubjects.State, () => new ReplaySubject(1));\n\n const properties: ExposedClientExtensionDebug = {\n debug: {\n get() {\n return debugStates.debug;\n },\n set(val: unknown) {\n debugStates.debug = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n logging: {\n get() {\n return debugStates.logging;\n },\n set(val: unknown) {\n debugStates.logging = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n validation: {\n get() {\n return debugStates.validation;\n },\n set(val: unknown) {\n debugStates.validation = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n discovery: {\n get() {\n return debugStates.discovery;\n },\n set(val: unknown) {\n debugStates.discovery = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n /** @since 2.1.0 */\n logLevel: {\n get() {\n return debugStates.logLevel;\n },\n set(val: unknown) {\n let level = String(val).toUpperCase() as LogLevel;\n\n // Handle runtime errors\n if (!Object.values(LogLevel).includes(level)) {\n level = LogLevel.info;\n }\n\n debugStates.logLevel = level;\n debugStateSubject.notify(debugStates);\n },\n },\n __initialized: { value: true, writable: false },\n };\n Object.defineProperties(debugGlobal, properties);\n\n Object.defineProperty(window, '____c_p_d', {\n configurable: true, // needed for testing :(\n get() {\n return debugGlobal;\n },\n set(val) {\n // its a boolean\n if (val === true || val === false) {\n debugGlobal.debug = val;\n debugGlobal.logging = val;\n debugGlobal.validation = val;\n debugGlobal.discovery = val;\n return;\n }\n\n // we can handle booleans - like above\n // or objects (except null) and nothing else.\n if (typeof val !== 'object' || val === null) {\n return;\n }\n\n const clientExtensionDebugKeys = Object.keys(ClientExtensionDebugTypes) as (keyof ClientExtensionDebug)[];\n\n clientExtensionDebugKeys.forEach((key) => {\n if (key in val) {\n debugGlobal[key] = val[key];\n }\n });\n },\n });\n\n // Now, we can use the previous value e.g. boolean, to set the value for all flags\n window.____c_p_d = previousGlobal as ExposedClientExtensionDebug;\n};\n\n// Register global value only once\nif (!('____c_p_d' in window) || !window.____c_p_d.__initialized) {\n defineDebugGlobal(window.____c_p_d ?? process.env.NODE_ENV !== 'production');\n}\n\nexport const observeStateChange = (observer: Observer<ClientExtensionDebug>) =>\n observeDebugSubject<ClientExtensionDebug>(DebugSubjects.State, observer);\n\nexport const isDebugEnabled = () => {\n return window.____c_p_d.debug as boolean;\n};\n\nexport const isLoggingEnabled = () => {\n return window.____c_p_d.logging as boolean;\n};\n\nexport const isValidationEnabled = () => {\n return window.____c_p_d.validation as boolean;\n};\n\nexport const isDiscoveryEnabled = () => {\n return window.____c_p_d.discovery as boolean;\n};\n\n/** @since 2.1.0 */\nexport const getLogLevel = (): LogLevel => {\n const logLevel = window.____c_p_d.logLevel as LogLevel;\n\n return logLevel ?? LogLevel.info;\n};\n\nexport const setDebugEnabled = (value: boolean) => {\n (window.____c_p_d.debug as boolean) = value;\n};\n\nexport const setLoggingEnabled = (value: boolean) => {\n (window.____c_p_d.logging as boolean) = value;\n};\n\nexport const setValidationEnabled = (value: boolean) => {\n (window.____c_p_d.validation as boolean) = value;\n};\n\nexport const setDiscoveryEnabled = (value: boolean) => {\n (window.____c_p_d.discovery as boolean) = value;\n};\n\n/** @since 2.1.0 */\nexport const setLogLevel = (value: string) => {\n const level = value.toUpperCase() as LogLevel;\n\n (window.____c_p_d.logLevel as LogLevel) = level;\n};\n"]}
1
+ {"version":3,"file":"debug-state.js","sourceRoot":"","sources":["../../lib/debug-state.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-underscore-dangle */\n\nimport type { Observer } from '@atlassian/clientside-extensions-base';\nimport { ReplaySubject } from '@atlassian/clientside-extensions-base';\nimport { DebugSubjects, observeDebugSubject, registerDebugSubject } from './debug-subjects';\nimport { LogLevel } from './logger/logger';\n\nenum ClientExtensionDebugTypes {\n debug = 'debug',\n logging = 'logging',\n validation = 'validation',\n discovery = 'discovery',\n /** @since 2.1.0 */\n logLevel = 'logLevel',\n}\n\ntype DebugTypeKeys = Exclude<keyof typeof ClientExtensionDebugTypes, 'logLevel'>;\n\nexport type ClientExtensionDebug = {\n [key in DebugTypeKeys]: boolean;\n} & {\n [ClientExtensionDebugTypes.logLevel]: LogLevel;\n};\n\nexport type ExposedClientExtensionDebug = { [key in keyof ClientExtensionDebug]: PropertyDescriptor } & {\n __initialized: PropertyDescriptor;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // The global ____c_p_d is a primitive boolean value that holds additional properties\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_d: ExposedClientExtensionDebug;\n }\n}\n\nconst defineDebugGlobal = (previousGlobal: unknown) => {\n // initialize as boolean\n const debugGlobal = Object.create(null);\n const debugStates: ClientExtensionDebug = {\n debug: false,\n logging: false,\n validation: false,\n discovery: false,\n /** @since 2.1.0 */\n // In dev mode we set default loglevel to INFO\n logLevel: process.env.NODE_ENV === 'production' ? LogLevel.error : LogLevel.info,\n };\n\n const debugStateSubject = registerDebugSubject(DebugSubjects.State, () => new ReplaySubject(1));\n\n const properties: ExposedClientExtensionDebug = {\n debug: {\n get() {\n return debugStates.debug;\n },\n set(val: unknown) {\n debugStates.debug = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n logging: {\n get() {\n return debugStates.logging;\n },\n set(val: unknown) {\n debugStates.logging = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n validation: {\n get() {\n return debugStates.validation;\n },\n set(val: unknown) {\n debugStates.validation = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n discovery: {\n get() {\n return debugStates.discovery;\n },\n set(val: unknown) {\n debugStates.discovery = Boolean(val);\n debugStateSubject.notify(debugStates);\n },\n },\n /** @since 2.1.0 */\n logLevel: {\n get() {\n return debugStates.logLevel;\n },\n set(val: unknown) {\n let level = String(val).toUpperCase() as LogLevel;\n\n // Handle runtime errors\n if (!Object.values(LogLevel).includes(level)) {\n level = LogLevel.info;\n }\n\n debugStates.logLevel = level;\n debugStateSubject.notify(debugStates);\n },\n },\n __initialized: { value: true, writable: false },\n };\n Object.defineProperties(debugGlobal, properties);\n\n Object.defineProperty(window, '____c_p_d', {\n configurable: true, // needed for testing :(\n get() {\n return debugGlobal;\n },\n set(val) {\n // its a boolean\n if (val === true || val === false) {\n debugGlobal.debug = val;\n debugGlobal.logging = val;\n debugGlobal.validation = val;\n debugGlobal.discovery = val;\n return;\n }\n\n // we can handle booleans - like above\n // or objects (except null) and nothing else.\n if (typeof val !== 'object' || val === null) {\n return;\n }\n\n const clientExtensionDebugKeys = Object.keys(ClientExtensionDebugTypes) as (keyof ClientExtensionDebug)[];\n\n clientExtensionDebugKeys.forEach((key) => {\n if (key in val) {\n debugGlobal[key] = val[key];\n }\n });\n },\n });\n\n // Now, we can use the previous value e.g. boolean, to set the value for all flags\n window.____c_p_d = previousGlobal as ExposedClientExtensionDebug;\n};\n\n// Register global value only once\nif (!('____c_p_d' in window) || !window.____c_p_d.__initialized) {\n defineDebugGlobal(window.____c_p_d ?? process.env.NODE_ENV !== 'production');\n}\n\nexport const observeStateChange = (observer: Observer<ClientExtensionDebug>) =>\n observeDebugSubject<ClientExtensionDebug>(DebugSubjects.State, observer);\n\nexport const isDebugEnabled = () => {\n return window.____c_p_d.debug as boolean;\n};\n\nexport const isLoggingEnabled = () => {\n return window.____c_p_d.logging as boolean;\n};\n\nexport const isValidationEnabled = () => {\n return window.____c_p_d.validation as boolean;\n};\n\nexport const isDiscoveryEnabled = () => {\n return window.____c_p_d.discovery as boolean;\n};\n\n/** @since 2.1.0 */\nexport const getLogLevel = (): LogLevel => {\n const logLevel = window.____c_p_d.logLevel as LogLevel;\n\n return logLevel ?? LogLevel.info;\n};\n\nexport const setDebugEnabled = (value: boolean) => {\n (window.____c_p_d.debug as boolean) = value;\n};\n\nexport const setLoggingEnabled = (value: boolean) => {\n (window.____c_p_d.logging as boolean) = value;\n};\n\nexport const setValidationEnabled = (value: boolean) => {\n (window.____c_p_d.validation as boolean) = value;\n};\n\nexport const setDiscoveryEnabled = (value: boolean) => {\n (window.____c_p_d.discovery as boolean) = value;\n};\n\n/** @since 2.1.0 */\nexport const setLogLevel = (value: string) => {\n const level = value.toUpperCase() as LogLevel;\n\n (window.____c_p_d.logLevel as LogLevel) = level;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-subjects.js","sourceRoot":"","sources":["../../lib/debug-subjects.ts"],"names":[],"mappings":"AAyBA,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAC7B,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAmC;QAC/C,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC/C,QAAQ,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,KAAK;SAClB;KACJ,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC;AACrC,CAAC,CAAC;AAEF,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE;IAC7D,mBAAmB,EAAE,CAAC;CACzB;AAID;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,GAAkB,EAClB,cAAiC,EACtB,EAAE;IACb,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAyC,CAAC;IAEjF,0EAA0E;IAC1E,6HAA6H;IAC7H,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,aAAa,CAAC,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC;KACzC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAc,GAAkB,EAAE,QAA+B,EAAE,EAAE;IACpG,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAkD,CAAC;IAE1F,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;KAC9D;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { Observer, Subject } from '@atlassian/clientside-extensions-base';\n\ntype ExposedClientExtensionSubjects = {\n __initialized: PropertyDescriptor;\n subjects: PropertyDescriptor;\n};\n\nexport const enum DebugSubjects {\n Logger = 'logger',\n State = 'state',\n}\n\ntype DebugSubjectsMap<Subject> = {\n [key in DebugSubjects]: Subject;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_s: ExposedClientExtensionSubjects;\n }\n}\n\nconst defineSubjectGlobal = () => {\n // initialize as boolean\n const subjectGlobal = Object.create(null);\n\n const properties: ExposedClientExtensionSubjects = {\n __initialized: { value: true, writable: false },\n subjects: {\n value: subjectGlobal,\n writable: false,\n },\n };\n\n Object.defineProperties(subjectGlobal, properties);\n\n window.____c_p_s = subjectGlobal;\n};\n\nif (!('____c_p_s' in window) || !window.____c_p_s.__initialized) {\n defineSubjectGlobal();\n}\n\ntype UnpackPayloadType<SubjectType> = SubjectType extends Subject<infer U> ? U : never;\n\n/**\n * Registers a debug subject as singleton\n *\n * @param key\n * @param subjectFactory\n */\nexport const registerDebugSubject = <SubjectType extends Subject<PayloadType>, PayloadType = UnpackPayloadType<SubjectType>>(\n key: DebugSubjects,\n subjectFactory: () => SubjectType,\n): SubjectType => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<SubjectType>;\n\n // good old singletons - ensure we do not register the same subject twice.\n // we also can't fail as multiple instances might try to access the same, so instead we return the previously registered one.\n if (!(key in debugSubjects)) {\n debugSubjects[key] = subjectFactory();\n }\n\n return debugSubjects[key];\n};\n\nexport const observeDebugSubject = <PayloadType>(key: DebugSubjects, observer: Observer<PayloadType>) => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<Subject<PayloadType>>;\n\n if (!(key in debugSubjects)) {\n throw new Error(`No subject registered for key: \"${key}\"`);\n }\n\n return debugSubjects[key].subscribe(observer);\n};\n"]}
1
+ {"version":3,"file":"debug-subjects.js","sourceRoot":"","sources":["../../lib/debug-subjects.ts"],"names":[],"mappings":"AAyBA,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAC7B,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAmC;QAC/C,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC/C,QAAQ,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,KAAK;SAClB;KACJ,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC;AACrC,CAAC,CAAC;AAEF,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE;IAC7D,mBAAmB,EAAE,CAAC;CACzB;AAID;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,GAAkB,EAClB,cAAiC,EACtB,EAAE;IACb,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAyC,CAAC;IAEjF,0EAA0E;IAC1E,6HAA6H;IAC7H,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,aAAa,CAAC,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC;KACzC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAc,GAAkB,EAAE,QAA+B,EAAE,EAAE;IACpG,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAkD,CAAC;IAE1F,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;KAC9D;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC","sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { Observer, Subject } from '@atlassian/clientside-extensions-base';\n\ntype ExposedClientExtensionSubjects = {\n __initialized: PropertyDescriptor;\n subjects: PropertyDescriptor;\n};\n\nexport const enum DebugSubjects {\n Logger = 'logger',\n State = 'state',\n}\n\ntype DebugSubjectsMap<SubjectT> = {\n [key in DebugSubjects]: SubjectT;\n};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n // Due to historical name changes the \"p\" still represents the old \"plugin\" nomenclature\n ____c_p_s: ExposedClientExtensionSubjects;\n }\n}\n\nconst defineSubjectGlobal = () => {\n // initialize as boolean\n const subjectGlobal = Object.create(null);\n\n const properties: ExposedClientExtensionSubjects = {\n __initialized: { value: true, writable: false },\n subjects: {\n value: subjectGlobal,\n writable: false,\n },\n };\n\n Object.defineProperties(subjectGlobal, properties);\n\n window.____c_p_s = subjectGlobal;\n};\n\nif (!('____c_p_s' in window) || !window.____c_p_s.__initialized) {\n defineSubjectGlobal();\n}\n\ntype UnpackPayloadType<SubjectType> = SubjectType extends Subject<infer U> ? U : never;\n\n/**\n * Registers a debug subject as singleton\n *\n * @param key\n * @param subjectFactory\n */\nexport const registerDebugSubject = <SubjectType extends Subject<PayloadType>, PayloadType = UnpackPayloadType<SubjectType>>(\n key: DebugSubjects,\n subjectFactory: () => SubjectType,\n): SubjectType => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<SubjectType>;\n\n // good old singletons - ensure we do not register the same subject twice.\n // we also can't fail as multiple instances might try to access the same, so instead we return the previously registered one.\n if (!(key in debugSubjects)) {\n debugSubjects[key] = subjectFactory();\n }\n\n return debugSubjects[key];\n};\n\nexport const observeDebugSubject = <PayloadType>(key: DebugSubjects, observer: Observer<PayloadType>) => {\n const debugSubjects = window.____c_p_s.subjects as DebugSubjectsMap<Subject<PayloadType>>;\n\n if (!(key in debugSubjects)) {\n throw new Error(`No subject registered for key: \"${key}\"`);\n }\n\n return debugSubjects[key].subscribe(observer);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../lib/logger/console.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,mBAAmB,GAAG,CAAC,KAAe,EAAwB,EAAE;IAClE,QAAQ,KAAK,EAAE;QACX,KAAK,QAAQ,CAAC,KAAK;YACf,OAAO,OAAO,CAAC;QACnB,KAAK,QAAQ,CAAC,KAAK;YACf,OAAO,OAAO,CAAC;QACnB,KAAK,QAAQ,CAAC,IAAI;YACd,OAAO,MAAM,CAAC;QAClB,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnB,KAAK,QAAQ,CAAC,WAAW;YACrB,OAAO,MAAM,CAAC;QAClB;YACI,OAAO,OAAO,CAAC;KACtB;AACL,CAAC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5E,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChF,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,CAAC;AAEvF,MAAM,SAAS,GAAgC;IAC3C,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW;IAC7B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW;IAC7B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU;IAC3B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB;IACzC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU;CAC9B,CAAC;AAEF,SAAS,gBAAgB,CAAC,QAAkB,EAAE,aAAuB;IACjE,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE;QAC7B,OAAO,IAAI,CAAC;KACf;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEnC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1E,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAsB,EAAE,EAAE;IACpD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;QAC5C,OAAO;KACV;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,kBAAkB,GACpB,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW;QAClC,CAAC,CAAC;CACb;QACW,CAAC,CAAC,EAAE,CAAC;IAEb,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,kBAAkB,uCAAuC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnG,kBAAkB;IAClB,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE;QAC7B,OAAO,CAAC,cAAc,CAAC,qDAAqD,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC;YACR,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,EAAE,CAAC;KACtB;AACL,CAAC,CAAC","sourcesContent":["import type { LoggerPayload } from './logger';\nimport { LogLevel } from './logger';\nimport { getLogLevel } from '../debug-state';\n\nconst getLoggingFromLevel = (level: LogLevel): keyof typeof console => {\n switch (level) {\n case LogLevel.error:\n return 'error';\n case LogLevel.debug:\n return 'debug';\n case LogLevel.info:\n return 'info';\n case LogLevel.warn:\n case LogLevel.deprecation:\n return 'warn';\n default:\n return 'debug';\n }\n};\n\n// Naive implementation but we can't use bitwise operators :(\nconst debugLevels = Object.values(LogLevel);\nconst errorLevels = debugLevels.filter((level) => level !== LogLevel.debug);\nconst warnLevels = errorLevels.filter((level) => level !== LogLevel.error);\nconst deprecationLevels = warnLevels.filter((level) => level !== LogLevel.warn);\nconst infoLevels = deprecationLevels.filter((level) => level !== LogLevel.deprecation);\n\nconst levelsMap: { [key: string]: string[] } = {\n [LogLevel.debug]: debugLevels,\n [LogLevel.error]: errorLevels,\n [LogLevel.warn]: warnLevels,\n [LogLevel.deprecation]: deprecationLevels,\n [LogLevel.info]: infoLevels,\n};\n\nfunction shouldDisplayLog(logLevel: LogLevel, eventLogLevel: LogLevel) {\n if (logLevel === LogLevel.debug) {\n return true;\n }\n\n const levels = levelsMap[logLevel];\n\n return Array.isArray(levels) ? levels.includes(eventLogLevel) : false;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport const consoleLogger = (payload: LoggerPayload) => {\n const eventLogLevel = payload.level;\n const logLevel = getLogLevel();\n\n if (!shouldDisplayLog(logLevel, eventLogLevel)) {\n return;\n }\n\n const consoleKey = getLoggingFromLevel(eventLogLevel);\n const deprecationWarning =\n payload.level === LogLevel.deprecation\n ? `⚠️⚠️⚠️ DEPRECATION WARNING ⚠️⚠️⚠️\n`\n : '';\n\n console[consoleKey](`${deprecationWarning}[Atlassian Client-side Extensions]: ${payload.message}`);\n\n // Verbose logging\n if (logLevel === LogLevel.debug) {\n console.groupCollapsed(' <click here for more details about above message>');\n console.log({\n components: payload.components,\n meta: payload.meta,\n });\n console.groupEnd();\n }\n};\n"]}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../lib/logger/console.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LoggerPayload } from './logger';\nimport { LogLevel } from './logger';\nimport { getLogLevel } from '../debug-state';\n\n// We need to pick the callable keys from the console object\ntype ConsoleLogsTypes = keyof Pick<typeof console, 'log' | 'warn' | 'error' | 'info' | 'debug'>;\n\nconst getLoggingFromLevel = (level: LogLevel): ConsoleLogsTypes => {\n switch (level) {\n case LogLevel.error:\n return 'error';\n case LogLevel.debug:\n return 'debug';\n case LogLevel.info:\n return 'info';\n case LogLevel.warn:\n case LogLevel.deprecation:\n return 'warn';\n default:\n return 'debug';\n }\n};\n\n// Naive implementation but we can't use bitwise operators :(\nconst debugLevels = Object.values(LogLevel);\nconst errorLevels = debugLevels.filter((level) => level !== LogLevel.debug);\nconst warnLevels = errorLevels.filter((level) => level !== LogLevel.error);\nconst deprecationLevels = warnLevels.filter((level) => level !== LogLevel.warn);\nconst infoLevels = deprecationLevels.filter((level) => level !== LogLevel.deprecation);\n\nconst levelsMap: { [key: string]: string[] } = {\n [LogLevel.debug]: debugLevels,\n [LogLevel.error]: errorLevels,\n [LogLevel.warn]: warnLevels,\n [LogLevel.deprecation]: deprecationLevels,\n [LogLevel.info]: infoLevels,\n};\n\nfunction shouldDisplayLog(logLevel: LogLevel, eventLogLevel: LogLevel) {\n if (logLevel === LogLevel.debug) {\n return true;\n }\n\n const levels = levelsMap[logLevel];\n\n return Array.isArray(levels) ? levels.includes(eventLogLevel) : false;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport const consoleLogger = (payload: LoggerPayload) => {\n const eventLogLevel = payload.level;\n const logLevel = getLogLevel();\n\n if (!shouldDisplayLog(logLevel, eventLogLevel)) {\n return;\n }\n\n const consoleKey = getLoggingFromLevel(eventLogLevel);\n const deprecationWarning =\n payload.level === LogLevel.deprecation\n ? `⚠️⚠️⚠️ DEPRECATION WARNING ⚠️⚠️⚠️\n`\n : '';\n\n console[consoleKey](`${deprecationWarning}[Atlassian Client-side Extensions]: ${payload.message}`);\n\n // Verbose logging\n if (logLevel === LogLevel.debug) {\n console.groupCollapsed(' <click here for more details about above message>');\n console.log({\n components: payload.components,\n meta: payload.meta,\n });\n console.groupEnd();\n }\n};\n"]}
@@ -0,0 +1,8 @@
1
+ /// <reference types="jest" />
2
+ declare const observeStateChange: jest.Mock<any, any>;
3
+ declare const isDebugEnabled: jest.Mock<any, any>;
4
+ declare const isLoggingEnabled: jest.Mock<any, any>;
5
+ declare const isValidationEnabled: jest.Mock<any, any>;
6
+ declare const isDiscoveryEnabled: jest.Mock<any, any>;
7
+ export { observeStateChange, isDebugEnabled, isLoggingEnabled, isValidationEnabled, isDiscoveryEnabled };
8
+ //# sourceMappingURL=debug-state.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-state.mock.d.ts","sourceRoot":"","sources":["../../../lib/__mocks__/debug-state.mock.ts"],"names":[],"mappings":";AAAA,QAAA,MAAM,kBAAkB,qBAAY,CAAC;AACrC,QAAA,MAAM,cAAc,qBAAY,CAAC;AACjC,QAAA,MAAM,gBAAgB,qBAAY,CAAC;AACnC,QAAA,MAAM,mBAAmB,qBAAY,CAAC;AACtC,QAAA,MAAM,kBAAkB,qBAAY,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="jest" />
2
+ declare const observeDebugSubject: jest.Mock<any, any>;
3
+ declare const registerDebugSubject: jest.Mock<any, any>;
4
+ export { observeDebugSubject, registerDebugSubject };
5
+ //# sourceMappingURL=debug-subjects.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-subjects.mock.d.ts","sourceRoot":"","sources":["../../../lib/__mocks__/debug-subjects.mock.ts"],"names":[],"mappings":";AAAA,QAAA,MAAM,mBAAmB,qBAAY,CAAC;AACtC,QAAA,MAAM,oBAAoB,qBAAY,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-state.d.ts","sourceRoot":"","sources":["../../lib/debug-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,aAAK,yBAAyB;IAC1B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,mBAAmB;IACnB,QAAQ,aAAa;CACxB;AAED,aAAK,aAAa,GAAG,OAAO,CAAC,MAAM,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAC;AAEjF,oBAAY,oBAAoB,GAAG;KAC9B,GAAG,IAAI,aAAa,GAAG,OAAO;CAClC,GAAG;IACA,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAClD,CAAC;AAEF,oBAAY,2BAA2B,GAAG;KAAG,GAAG,IAAI,MAAM,oBAAoB,GAAG,kBAAkB;CAAE,GAAG;IACpG,aAAa,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IAEX,UAAU,MAAM;QAGZ,SAAS,EAAE,2BAA2B,CAAC;KAC1C;CACJ;AAmHD,eAAO,MAAM,kBAAkB,aAAc,QAAQ,CAAC,oBAAoB,CAAC,iEACC,CAAC;AAE7E,eAAO,MAAM,cAAc,eAE1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,eAE5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAE/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,eAE9B,CAAC;AAEF,mBAAmB;AACnB,eAAO,MAAM,WAAW,QAAO,QAI9B,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,OAAO,SAE7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,OAAO,SAE/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAW,OAAO,SAElD,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAAW,OAAO,SAEjD,CAAC;AAEF,mBAAmB;AACnB,eAAO,MAAM,WAAW,UAAW,MAAM,SAIxC,CAAC"}
1
+ {"version":3,"file":"debug-state.d.ts","sourceRoot":"","sources":["../../lib/debug-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,aAAK,yBAAyB;IAC1B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,mBAAmB;IACnB,QAAQ,aAAa;CACxB;AAED,aAAK,aAAa,GAAG,OAAO,CAAC,MAAM,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAC;AAEjF,oBAAY,oBAAoB,GAAG;KAC9B,GAAG,IAAI,aAAa,GAAG,OAAO;CAClC,GAAG;IACA,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAClD,CAAC;AAEF,oBAAY,2BAA2B,GAAG;KAAG,GAAG,IAAI,MAAM,oBAAoB,GAAG,kBAAkB;CAAE,GAAG;IACpG,aAAa,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IAEX,UAAU,MAAM;QAGZ,SAAS,EAAE,2BAA2B,CAAC;KAC1C;CACJ;AAmHD,eAAO,MAAM,kBAAkB,aAAc,SAAS,oBAAoB,CAAC,iEACC,CAAC;AAE7E,eAAO,MAAM,cAAc,eAE1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,eAE5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAE/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,eAE9B,CAAC;AAEF,mBAAmB;AACnB,eAAO,MAAM,WAAW,QAAO,QAI9B,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,OAAO,SAE7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,OAAO,SAE/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAW,OAAO,SAElD,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAAW,OAAO,SAEjD,CAAC;AAEF,mBAAmB;AACnB,eAAO,MAAM,WAAW,UAAW,MAAM,SAIxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../lib/logger/console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA8C9C,eAAO,MAAM,aAAa,YAAa,aAAa,SA0BnD,CAAC"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../lib/logger/console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAiD9C,eAAO,MAAM,aAAa,YAAa,aAAa,SA0BnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"default-logger.d.ts","sourceRoot":"","sources":["../../../lib/logger/default-logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAGpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QAEZ,aAAa,CAAC,EAAE,YAAY,CAAC;KAChC;CACJ;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,aAAc,QAAQ,CAAC,aAAa,CAAC,KAAG,YAEjE,CAAC;AAsBF,eAAO,MAAM,aAAa,cAA0B,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,WAAY,QAAQ,CAAC,aAAa,CAAC,KAAG,IAS3D,CAAC;AAEF,QAAA,MAAM,uBAAuB,YAAoC,CAAC;AAGlE,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"default-logger.d.ts","sourceRoot":"","sources":["../../../lib/logger/default-logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAGpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QAEZ,aAAa,CAAC,EAAE,YAAY,CAAC;KAChC;CACJ;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,aAAc,SAAS,aAAa,CAAC,KAAG,YAEjE,CAAC;AAsBF,eAAO,MAAM,aAAa,cAA0B,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,WAAY,SAAS,aAAa,CAAC,KAAG,IAS3D,CAAC;AAEF,QAAA,MAAM,uBAAuB,YAAoC,CAAC;AAGlE,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,CAAC"}
@@ -13,6 +13,7 @@ describe('debug-state initialization', () => {
13
13
  process.env.NODE_ENV = ORIGINAL_NODE_ENV;
14
14
  // reset cache of loaded modules. This will ensure that the module is re-initialized
15
15
  // with the new NODE_ENV value
16
+ // @ts-expect-error We don't care about the TS2790 issue here
16
17
  delete window.____c_p_d;
17
18
  jest.resetModules();
18
19
  });
@@ -20,8 +21,7 @@ describe('debug-state initialization', () => {
20
21
  it('should be set to FALSE if process.env.NODE_ENV is "production"', async () => {
21
22
  process.env.NODE_ENV = 'production';
22
23
 
23
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
- const debugStateModule = await import('./debug-state');
24
+ await import('./debug-state');
25
25
 
26
26
  expect(window.____c_p_d.__initialized).toBe(true);
27
27
 
@@ -11,8 +11,8 @@ export const enum DebugSubjects {
11
11
  State = 'state',
12
12
  }
13
13
 
14
- type DebugSubjectsMap<Subject> = {
15
- [key in DebugSubjects]: Subject;
14
+ type DebugSubjectsMap<SubjectT> = {
15
+ [key in DebugSubjects]: SubjectT;
16
16
  };
17
17
 
18
18
  declare global {
@@ -2,7 +2,10 @@ import type { LoggerPayload } from './logger';
2
2
  import { LogLevel } from './logger';
3
3
  import { getLogLevel } from '../debug-state';
4
4
 
5
- const getLoggingFromLevel = (level: LogLevel): keyof typeof console => {
5
+ // We need to pick the callable keys from the console object
6
+ type ConsoleLogsTypes = keyof Pick<typeof console, 'log' | 'warn' | 'error' | 'info' | 'debug'>;
7
+
8
+ const getLoggingFromLevel = (level: LogLevel): ConsoleLogsTypes => {
6
9
  switch (level) {
7
10
  case LogLevel.error:
8
11
  return 'error';