@pikku/core 0.6.9

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 (167) hide show
  1. package/CHANGELOG.md +339 -0
  2. package/README.md +5 -0
  3. package/dist/channel/channel-handler.d.ts +3 -0
  4. package/dist/channel/channel-handler.js +97 -0
  5. package/dist/channel/channel-runner.d.ts +26 -0
  6. package/dist/channel/channel-runner.js +86 -0
  7. package/dist/channel/channel-store.d.ts +14 -0
  8. package/dist/channel/channel-store.js +2 -0
  9. package/dist/channel/channel.types.d.ts +106 -0
  10. package/dist/channel/channel.types.js +1 -0
  11. package/dist/channel/eventhub-forwarder.d.ts +17 -0
  12. package/dist/channel/eventhub-forwarder.js +1 -0
  13. package/dist/channel/eventhub-service.d.ts +23 -0
  14. package/dist/channel/eventhub-service.js +1 -0
  15. package/dist/channel/eventhub-store.d.ts +5 -0
  16. package/dist/channel/eventhub-store.js +2 -0
  17. package/dist/channel/index.d.ts +9 -0
  18. package/dist/channel/index.js +9 -0
  19. package/dist/channel/local/index.d.ts +3 -0
  20. package/dist/channel/local/index.js +3 -0
  21. package/dist/channel/local/local-channel-handler.d.ts +17 -0
  22. package/dist/channel/local/local-channel-handler.js +41 -0
  23. package/dist/channel/local/local-channel-runner.d.ts +3 -0
  24. package/dist/channel/local/local-channel-runner.js +46 -0
  25. package/dist/channel/local/local-eventhub-service.d.ts +44 -0
  26. package/dist/channel/local/local-eventhub-service.js +81 -0
  27. package/dist/channel/log-channels.d.ts +6 -0
  28. package/dist/channel/log-channels.js +17 -0
  29. package/dist/channel/pikku-abstract-channel-handler.d.ts +15 -0
  30. package/dist/channel/pikku-abstract-channel-handler.js +33 -0
  31. package/dist/channel/serverless/index.d.ts +1 -0
  32. package/dist/channel/serverless/index.js +1 -0
  33. package/dist/channel/serverless/serverless-channel-runner.d.ts +10 -0
  34. package/dist/channel/serverless/serverless-channel-runner.js +98 -0
  35. package/dist/errors/error-handler.d.ts +39 -0
  36. package/dist/errors/error-handler.js +54 -0
  37. package/dist/errors/errors.d.ts +190 -0
  38. package/dist/errors/errors.js +315 -0
  39. package/dist/errors/index.d.ts +2 -0
  40. package/dist/errors/index.js +2 -0
  41. package/dist/http/http-route-runner.d.ts +30 -0
  42. package/dist/http/http-route-runner.js +208 -0
  43. package/dist/http/http-routes.types.d.ts +127 -0
  44. package/dist/http/http-routes.types.js +1 -0
  45. package/dist/http/http-session-service.d.ts +15 -0
  46. package/dist/http/http-session-service.js +1 -0
  47. package/dist/http/index.d.ts +6 -0
  48. package/dist/http/index.js +5 -0
  49. package/dist/http/log-http-routes.d.ts +6 -0
  50. package/dist/http/log-http-routes.js +17 -0
  51. package/dist/http/pikku-http-abstract-request.d.ts +57 -0
  52. package/dist/http/pikku-http-abstract-request.js +69 -0
  53. package/dist/http/pikku-http-abstract-response.d.ts +58 -0
  54. package/dist/http/pikku-http-abstract-response.js +54 -0
  55. package/dist/http/pikku-http-session-service.d.ts +45 -0
  56. package/dist/http/pikku-http-session-service.js +92 -0
  57. package/dist/index.d.ts +14 -0
  58. package/dist/index.js +14 -0
  59. package/dist/permissions.d.ts +10 -0
  60. package/dist/permissions.js +32 -0
  61. package/dist/pikku-request.d.ts +14 -0
  62. package/dist/pikku-request.js +21 -0
  63. package/dist/pikku-response.d.ts +6 -0
  64. package/dist/pikku-response.js +6 -0
  65. package/dist/scheduler/index.d.ts +3 -0
  66. package/dist/scheduler/index.js +3 -0
  67. package/dist/scheduler/log-schedulers.d.ts +6 -0
  68. package/dist/scheduler/log-schedulers.js +17 -0
  69. package/dist/scheduler/scheduler-runner.d.ts +21 -0
  70. package/dist/scheduler/scheduler-runner.js +73 -0
  71. package/dist/scheduler/scheduler.types.d.ts +21 -0
  72. package/dist/scheduler/scheduler.types.js +1 -0
  73. package/dist/schema.d.ts +26 -0
  74. package/dist/schema.js +100 -0
  75. package/dist/services/content-service.d.ts +55 -0
  76. package/dist/services/content-service.js +1 -0
  77. package/dist/services/index.d.ts +12 -0
  78. package/dist/services/index.js +14 -0
  79. package/dist/services/jwt-service.d.ts +29 -0
  80. package/dist/services/jwt-service.js +1 -0
  81. package/dist/services/local-content.d.ts +33 -0
  82. package/dist/services/local-content.js +6 -0
  83. package/dist/services/local-secrets.d.ts +26 -0
  84. package/dist/services/local-secrets.js +39 -0
  85. package/dist/services/local-variables.d.ts +7 -0
  86. package/dist/services/local-variables.js +12 -0
  87. package/dist/services/logger-console.d.ts +52 -0
  88. package/dist/services/logger-console.js +82 -0
  89. package/dist/services/logger.d.ts +48 -0
  90. package/dist/services/logger.js +9 -0
  91. package/dist/services/schema-service.d.ts +24 -0
  92. package/dist/services/schema-service.js +1 -0
  93. package/dist/services/secret-service.d.ts +17 -0
  94. package/dist/services/secret-service.js +1 -0
  95. package/dist/services/user-session-service.d.ts +6 -0
  96. package/dist/services/user-session-service.js +1 -0
  97. package/dist/services/variables-service.d.ts +4 -0
  98. package/dist/services/variables-service.js +1 -0
  99. package/dist/types/core.types.d.ts +109 -0
  100. package/dist/types/core.types.js +1 -0
  101. package/dist/types/functions.types.d.ts +27 -0
  102. package/dist/types/functions.types.js +1 -0
  103. package/dist/utils.d.ts +2 -0
  104. package/dist/utils.js +15 -0
  105. package/package.json +48 -0
  106. package/run-tests.sh +53 -0
  107. package/src/channel/channel-handler.ts +179 -0
  108. package/src/channel/channel-runner.ts +156 -0
  109. package/src/channel/channel-store.ts +32 -0
  110. package/src/channel/channel.types.ts +202 -0
  111. package/src/channel/eventhub-forwarder.ts +25 -0
  112. package/src/channel/eventhub-service.ts +30 -0
  113. package/src/channel/eventhub-store.ts +8 -0
  114. package/src/channel/index.ts +9 -0
  115. package/src/channel/local/index.ts +3 -0
  116. package/src/channel/local/local-channel-handler.ts +56 -0
  117. package/src/channel/local/local-channel-runner.test.ts +128 -0
  118. package/src/channel/local/local-channel-runner.ts +94 -0
  119. package/src/channel/local/local-eventhub-service.test.ts +95 -0
  120. package/src/channel/local/local-eventhub-service.ts +95 -0
  121. package/src/channel/log-channels.ts +20 -0
  122. package/src/channel/pikku-abstract-channel-handler.test.ts +77 -0
  123. package/src/channel/pikku-abstract-channel-handler.ts +44 -0
  124. package/src/channel/serverless/index.ts +1 -0
  125. package/src/channel/serverless/serverless-channel-runner.ts +190 -0
  126. package/src/errors/error-handler.ts +74 -0
  127. package/src/errors/error.test.ts +54 -0
  128. package/src/errors/errors.ts +340 -0
  129. package/src/errors/index.ts +2 -0
  130. package/src/http/http-route-runner.test.ts +193 -0
  131. package/src/http/http-route-runner.ts +365 -0
  132. package/src/http/http-routes.types.ts +189 -0
  133. package/src/http/http-session-service.ts +19 -0
  134. package/src/http/index.ts +16 -0
  135. package/src/http/log-http-routes.ts +20 -0
  136. package/src/http/pikku-http-abstract-request.ts +95 -0
  137. package/src/http/pikku-http-abstract-response.ts +79 -0
  138. package/src/http/pikku-http-session-service.test.ts +106 -0
  139. package/src/http/pikku-http-session-service.ts +135 -0
  140. package/src/index.ts +15 -0
  141. package/src/permissions.test.ts +58 -0
  142. package/src/permissions.ts +45 -0
  143. package/src/pikku-request.ts +19 -0
  144. package/src/pikku-response.ts +5 -0
  145. package/src/scheduler/index.ts +11 -0
  146. package/src/scheduler/log-schedulers.ts +20 -0
  147. package/src/scheduler/scheduler-runner.ts +132 -0
  148. package/src/scheduler/scheduler.types.ts +27 -0
  149. package/src/schema.test.ts +57 -0
  150. package/src/schema.ts +124 -0
  151. package/src/services/content-service.ts +69 -0
  152. package/src/services/index.ts +16 -0
  153. package/src/services/jwt-service.ts +36 -0
  154. package/src/services/local-content.ts +39 -0
  155. package/src/services/local-secrets.ts +43 -0
  156. package/src/services/local-variables.ts +17 -0
  157. package/src/services/logger-console.ts +97 -0
  158. package/src/services/logger.ts +57 -0
  159. package/src/services/schema-service.ts +26 -0
  160. package/src/services/secret-service.ts +17 -0
  161. package/src/services/user-session-service.ts +7 -0
  162. package/src/services/variables-service.ts +6 -0
  163. package/src/types/core.types.ts +162 -0
  164. package/src/types/functions.types.ts +44 -0
  165. package/src/utils.ts +21 -0
  166. package/tsconfig.json +13 -0
  167. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,43 @@
1
+ import { LocalVariablesService } from './local-variables.js'
2
+ import { SecretService } from './secret-service.js'
3
+ import { VariablesService } from './variables-service.js'
4
+
5
+ /**
6
+ * Service for retrieving secrets from environment variables.
7
+ */
8
+ export class LocalSecretService implements SecretService {
9
+ /**
10
+ * Creates an instance of LocalSecretService.
11
+ */
12
+ constructor(
13
+ private variablesService: VariablesService = new LocalVariablesService()
14
+ ) {}
15
+
16
+ /**
17
+ * Retrieves a secret by key.
18
+ * @param key - The key of the secret to retrieve.
19
+ * @returns A promise that resolves to the secret value.
20
+ * @throws {Error} If the secret is not found.
21
+ */
22
+ public async getSecretJSON<R>(key: string): Promise<R> {
23
+ const value = await this.variablesService.get(key)
24
+ if (value) {
25
+ return JSON.parse(value)
26
+ }
27
+ throw new Error(`Secret Not Found: ${key}`)
28
+ }
29
+
30
+ /**
31
+ * Retrieves a secret by key.
32
+ * @param key - The key of the secret to retrieve.
33
+ * @returns A promise that resolves to the secret value.
34
+ * @throws {Error} If the secret is not found.
35
+ */
36
+ public async getSecret(key: string): Promise<string> {
37
+ const value = await this.variablesService.get(key)
38
+ if (value) {
39
+ return value
40
+ }
41
+ throw new Error(`Secret Not Found: ${key}`)
42
+ }
43
+ }
@@ -0,0 +1,17 @@
1
+ import { VariablesService } from './variables-service.js'
2
+
3
+ export class LocalVariablesService implements VariablesService {
4
+ constructor(
5
+ private variables: Record<string, string | undefined> = process.env
6
+ ) {}
7
+
8
+ public getAll():
9
+ | Promise<Record<string, string | undefined>>
10
+ | Record<string, string | undefined> {
11
+ return this.variables || {}
12
+ }
13
+
14
+ public get(name: string): Promise<string | undefined> | string | undefined {
15
+ return this.variables[name]
16
+ }
17
+ }
@@ -0,0 +1,97 @@
1
+ import { Logger, LogLevel } from './logger.js'
2
+
3
+ /**
4
+ * A logger implementation that logs messages to the console.
5
+ */
6
+ export class ConsoleLogger implements Logger {
7
+ /**
8
+ * The current logging level.
9
+ */
10
+ private level: LogLevel = LogLevel.info
11
+
12
+ /**
13
+ * Sets the logging level.
14
+ * @param level - The logging level to set.
15
+ */
16
+ setLevel(level: LogLevel): void {
17
+ this.level = level
18
+ }
19
+
20
+ /**
21
+ * Logs a trace message.
22
+ * @param message - The message to log.
23
+ * @param meta - Additional metadata to log.
24
+ */
25
+ trace?(message: string, ...meta: any[]): void {
26
+ if (this.level <= LogLevel.trace) {
27
+ console.trace('TRACE:', message, ...meta)
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Logs a debug message.
33
+ * @param message - The message to log.
34
+ * @param meta - Additional metadata to log.
35
+ */
36
+ debug(message: string, ...meta: any[]): void {
37
+ if (this.level <= LogLevel.debug) {
38
+ console.debug('DEBUG:', message, ...meta)
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Logs an informational message.
44
+ * @param messageOrObj - The message or object to log.
45
+ * @param meta - Additional metadata to log.
46
+ */
47
+ info(messageOrObj: string | Record<string, any>, ...meta: any[]): void {
48
+ if (this.level <= LogLevel.info) {
49
+ console.info('INFO:', messageOrObj, ...meta)
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Logs a warning message.
55
+ * @param messageOrObj - The message or object to log.
56
+ * @param meta - Additional metadata to log.
57
+ */
58
+ warn(messageOrObj: string | Record<string, any>, ...meta: any[]): void {
59
+ if (this.level <= LogLevel.warn) {
60
+ console.warn('WARN:', messageOrObj, ...meta)
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Logs an error message.
66
+ * @param messageOrObj - The message, object, or error to log.
67
+ * @param meta - Additional metadata to log.
68
+ */
69
+ error(
70
+ messageOrObj: string | Record<string, any> | Error,
71
+ ...meta: any[]
72
+ ): void {
73
+ if (this.level <= LogLevel.error) {
74
+ console.error(
75
+ 'ERROR:',
76
+ messageOrObj instanceof Error ? messageOrObj.message : messageOrObj,
77
+ ...meta
78
+ )
79
+ if (messageOrObj instanceof Error) {
80
+ console.error('STACK:', messageOrObj.stack)
81
+ }
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Logs a message at a specified level.
87
+ * @param level - The logging level.
88
+ * @param message - The message to log.
89
+ * @param meta - Additional metadata to log.
90
+ */
91
+ log(level: string, message: string, ...meta: any[]): void {
92
+ const logLevel = LogLevel[level as keyof typeof LogLevel]
93
+ if (this.level <= logLevel) {
94
+ console.log(`${level.toUpperCase()}:`, message, ...meta)
95
+ }
96
+ }
97
+ }
@@ -0,0 +1,57 @@
1
+ export enum LogLevel {
2
+ 'trace', // Add this level
3
+ 'debug',
4
+ 'info',
5
+ 'warn',
6
+ 'error',
7
+ 'critical',
8
+ }
9
+
10
+ /**
11
+ * Interface for logging messages at various levels.
12
+ */
13
+ export interface Logger {
14
+ /**
15
+ * Logs an informational message.
16
+ * @param messageOrObj - The message or object to log.
17
+ * @param meta - Additional metadata to log.
18
+ */
19
+ info(messageOrObj: string | Record<string, any>, ...meta: any[]): void
20
+
21
+ /**
22
+ * Logs a warning message.
23
+ * @param messageOrObj - The message or object to log.
24
+ * @param meta - Additional metadata to log.
25
+ */
26
+ warn(messageOrObj: string | Record<string, any>, ...meta: any[]): void
27
+
28
+ /**
29
+ * Logs an error message.
30
+ * @param messageOrObj - The message, object, or error to log.
31
+ * @param meta - Additional metadata to log.
32
+ */
33
+ error(
34
+ messageOrObj: string | Record<string, any> | Error,
35
+ ...meta: any[]
36
+ ): void
37
+
38
+ /**
39
+ * Logs a debug message.
40
+ * @param message - The message to log.
41
+ * @param meta - Additional metadata to log.
42
+ */
43
+ debug(message: string, ...meta: any[]): void
44
+
45
+ /**
46
+ * Logs a trace message.
47
+ * @param message - The message to log.
48
+ * @param meta - Additional metadata to log.
49
+ */
50
+ trace?(message: string, ...meta: any[]): void
51
+
52
+ /**
53
+ * Sets the logging level.
54
+ * @param level - The logging level to set.
55
+ */
56
+ setLevel(level: LogLevel): void
57
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Interface for a schema service that handles schema compilation, validation, and management.
3
+ */
4
+ export interface SchemaService {
5
+ /**
6
+ * Compiles a schema with the provided name and value, making it available for use.
7
+ * @param {string} name - The unique name for the schema.
8
+ * @param {any} value - The schema definition or configuration to be compiled.
9
+ * @returns {Promise<void> | void} A promise if asynchronous, or void if synchronous.
10
+ */
11
+ compileSchema: (name: string, value: any) => Promise<void> | void
12
+
13
+ /**
14
+ * Validates data against a specified schema.
15
+ * @param {string} schema - The name of the schema to validate against.
16
+ * @param {any} data - The data to validate against the schema.
17
+ * @returns {Promise<void> | void} A promise if asynchronous, or void if synchronous.
18
+ */
19
+ validateSchema: (schema: string, data: any) => Promise<void> | void
20
+
21
+ /**
22
+ * Retrieves a set of all registered schema names.
23
+ * @returns {Set<string>} A set containing the names of all available schemas.
24
+ */
25
+ getSchemaNames: () => Set<string>
26
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Interface for retrieving secrets.
3
+ */
4
+ export interface SecretService {
5
+ /**
6
+ * Retrieves a secret by key.
7
+ * @param key - The key of the secret to retrieve.
8
+ * @returns A promise that resolves to the secret value.
9
+ */
10
+ getSecretJSON<Return = {}>(key: string): Promise<Return>
11
+ /**
12
+ * Retrieves a secret by key.
13
+ * @param key - The key of the secret to retrieve.
14
+ * @returns A promise that resolves to the secret value.
15
+ */
16
+ getSecret(key: string): Promise<string>
17
+ }
@@ -0,0 +1,7 @@
1
+ import { CoreUserSession } from '../types/core.types.js'
2
+
3
+ export interface UserSessionService<UserSession extends CoreUserSession> {
4
+ setSession: (session: UserSession) => Promise<void> | void
5
+ deleteSession: () => Promise<void> | void
6
+ getSession: () => Promise<UserSession | void> | UserSession | void
7
+ }
@@ -0,0 +1,6 @@
1
+ export interface VariablesService {
2
+ get: (name: string) => Promise<string | undefined> | string | undefined
3
+ getAll: () =>
4
+ | Promise<Record<string, string | undefined>>
5
+ | Record<string, string | undefined>
6
+ }
@@ -0,0 +1,162 @@
1
+ import type { Logger, LogLevel } from '../services/logger.js'
2
+ import type { HTTPSessionService } from '../http/http-session-service.js'
3
+ import { VariablesService } from '../services/variables-service.js'
4
+ import { EventHubService } from '../channel/eventhub-service.js'
5
+ import { SchemaService } from '../services/schema-service.js'
6
+ import { enforceChannelAccess } from '../channel/channel.types.js'
7
+ import { enforceHTTPAccess, PikkuHTTP } from '../http/http-routes.types.js'
8
+ import { UserSessionService } from '../services/user-session-service.js'
9
+ import { JWTService } from '../services/jwt-service.js'
10
+ import { SecretService } from '../services/secret-service.js'
11
+
12
+ export type MakeRequired<T, K extends keyof T> = Omit<T, K> &
13
+ Required<Pick<T, K>>
14
+
15
+ /**
16
+ * Represents a JSON primitive type which can be a string, number, boolean, null, or undefined.
17
+ */
18
+ export type JSONPrimitive = string | number | boolean | null | undefined
19
+
20
+ /**
21
+ * Represents a JSON value which can be a primitive, an array, or an object.
22
+ */
23
+ export type JSONValue =
24
+ | JSONPrimitive
25
+ | JSONValue[]
26
+ | {
27
+ [key: string]: JSONValue
28
+ }
29
+
30
+ /**
31
+ * Utility type for making certain keys required and leaving the rest as optional.
32
+ */
33
+ export type PickRequired<T, K extends keyof T> = Required<Pick<T, K>> &
34
+ Partial<T>
35
+
36
+ /**
37
+ * Utility type for making certain keys optional while keeping the rest required.
38
+ */
39
+ export type PickOptional<T, K extends keyof T> = Partial<T> & Pick<T, K>
40
+
41
+ /**
42
+ * Utility type that ensures at least one key in the given type `T` is required.
43
+ */
44
+ export type RequireAtLeastOne<T> = {
45
+ [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
46
+ }[keyof T]
47
+
48
+ /**
49
+ * Interface for the core configuration settings of Pikku.
50
+ */
51
+ export type CoreConfig<Config extends Record<string, unknown> = {}> = {
52
+ /** The log level for the application. */
53
+ logLevel?: LogLevel
54
+ /** The maximum compute time allowed, in milliseconds (optional). */
55
+ maximumComputeTime?: number
56
+ /** Secrets used by the application (optional). */
57
+ secrets?: {}
58
+ } & Config
59
+
60
+ /**
61
+ * Represents a core user session, which can be extended for more specific session information.
62
+ */
63
+ export type CoreUserSession<UserSession = unknown> = UserSession
64
+
65
+ /**
66
+ * Interface for core singleton services provided by Pikku.
67
+ */
68
+ export type CoreSingletonServices<
69
+ Config extends CoreConfig = CoreConfig,
70
+ UserSession extends CoreUserSession = CoreUserSession,
71
+ UserServices extends Record<string, unknown> = {},
72
+ > = {
73
+ /** The http permission service used for authorization (optional). */
74
+ enforceHTTPAccess?: enforceHTTPAccess
75
+ /** The channel permission service used by the application (optional). */
76
+ enforceChannelAccess?: enforceChannelAccess
77
+ /** JWT Service */
78
+ jwt?: JWTService<UserSession>
79
+ /** The session service used by the application (optional). */
80
+ httpSessionService?: HTTPSessionService
81
+ /** The schema library used to validate data */
82
+ schemaService?: SchemaService
83
+ /** The core configuration for the application. */
84
+ config: Config
85
+ /** The logger used by the application. */
86
+ logger: Logger
87
+ /** The variable service to be used */
88
+ variablesService: VariablesService
89
+ /** The subscription service that is passed to streams */
90
+ eventHub?: EventHubService<unknown>
91
+ /** SecretServce */
92
+ secretService?: SecretService
93
+ } & UserServices
94
+
95
+ /**
96
+ * Represents different forms of interaction within Pikku and the outside world.
97
+ */
98
+ export interface PikkuInteractions {
99
+ http?: PikkuHTTP
100
+ }
101
+
102
+ /**
103
+ * Represents the core services used by Pikku, including singleton services and the request/response interaction.
104
+ */
105
+ export type CoreServices<
106
+ SingletonServices = CoreSingletonServices,
107
+ UserSession extends CoreUserSession = CoreUserSession,
108
+ CoreServices extends Record<string, unknown> = {},
109
+ > = SingletonServices &
110
+ PikkuInteractions & {
111
+ userSession?: UserSessionService<UserSession>
112
+ } & CoreServices
113
+
114
+ export type SessionServices<
115
+ SingletonServices extends CoreSingletonServices = CoreSingletonServices,
116
+ Services = CoreServices<SingletonServices>,
117
+ > = Omit<
118
+ Services,
119
+ keyof SingletonServices | keyof PikkuInteractions | 'session'
120
+ >
121
+
122
+ /**
123
+ * Defines a function type for creating singleton services from the given configuration.
124
+ */
125
+ export type CreateSingletonServices<
126
+ Config extends CoreConfig,
127
+ SingletonServices extends CoreSingletonServices,
128
+ > = (
129
+ config: Config,
130
+ existingServices?: Partial<SingletonServices>
131
+ ) => Promise<SingletonServices>
132
+
133
+ /**
134
+ * Defines a function type for creating session-specific services.
135
+ */
136
+ export type CreateSessionServices<
137
+ SingletonServices extends CoreSingletonServices = CoreSingletonServices,
138
+ Services extends
139
+ CoreServices<SingletonServices> = CoreServices<SingletonServices>,
140
+ UserSession extends CoreUserSession = CoreUserSession,
141
+ > = (
142
+ services: SingletonServices,
143
+ interaction: PikkuInteractions,
144
+ session: UserSession | undefined
145
+ ) => Promise<SessionServices<Services, SingletonServices>>
146
+
147
+ /**
148
+ * Defines a function type for creating config.
149
+ */
150
+ export type CreateConfig<Config extends CoreConfig> = (
151
+ variablesService?: VariablesService
152
+ ) => Promise<Config>
153
+
154
+ /**
155
+ * Represents the documentation for a route, including summary, description, tags, and errors.
156
+ */
157
+ export type APIDocs = {
158
+ summary?: string
159
+ description?: string
160
+ tags?: string[]
161
+ errors?: string[]
162
+ }
@@ -0,0 +1,44 @@
1
+ import type { CoreServices, CoreUserSession } from './core.types.js'
2
+
3
+ /**
4
+ * Represents a core API function that performs an operation using core services and a user session.
5
+ *
6
+ * @template In - The input type.
7
+ * @template Out - The output type.
8
+ * @template Services - The services type, defaults to `CoreServices`.
9
+ * @template Session - The session type, defaults to `CoreUserSession`.
10
+ */
11
+ export type CoreAPIFunction<
12
+ In,
13
+ Out,
14
+ Services = CoreServices,
15
+ Session = CoreUserSession,
16
+ > = (services: Services, data: In, session: Session) => Promise<Out>
17
+
18
+ /**
19
+ * Represents a core API function that can be used without a session.
20
+ *
21
+ * @template In - The input type.
22
+ * @template Out - The output type.
23
+ * @template Services - The services type, defaults to `CoreServices`.
24
+ * @template Session - The session type, defaults to `CoreUserSession`.
25
+ */
26
+ export type CoreAPIFunctionSessionless<
27
+ In,
28
+ Out,
29
+ Services = CoreServices,
30
+ Session = CoreUserSession,
31
+ > = (services: Services, data: In, session?: Session) => Promise<Out>
32
+
33
+ /**
34
+ * Represents a function that checks permissions for a given API operation.
35
+ *
36
+ * @template In - The input type.
37
+ * @template Services - The services type, defaults to `CoreServices`.
38
+ * @template Session - The session type, defaults to `CoreUserSession`.
39
+ */
40
+ export type CoreAPIPermission<
41
+ In = any,
42
+ Services = CoreServices,
43
+ Session = CoreUserSession,
44
+ > = (services: Services, data: In, session?: Session) => Promise<boolean>
package/src/utils.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { Logger } from './services/logger.js'
2
+
3
+ // TODO: SessionServices probably needs it's own type
4
+ // but is an issue for the future and will be tackled
5
+ // with dependency injection
6
+ export const closeSessionServices = async (
7
+ logger: Logger,
8
+ sessionServices: Record<string, any>
9
+ ) => {
10
+ await Promise.all(
11
+ Object.values(sessionServices).map(async (service) => {
12
+ if (service?.close) {
13
+ try {
14
+ await service.close()
15
+ } catch (e: any) {
16
+ logger.error(e)
17
+ }
18
+ }
19
+ })
20
+ )
21
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./src",
5
+ "composite": true,
6
+ "module": "Node16",
7
+ "outDir": "dist",
8
+ "target": "esnext",
9
+ "moduleResolution": "node16"
10
+ },
11
+ "exclude": ["**/*.test.ts", "node_modules", "dist"],
12
+ "references": []
13
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/typescript/lib/lib.esnext.full.d.ts","./src/services/logger.ts","../../node_modules/cookie/dist/index.d.ts","./src/pikku-request.ts","./src/errors/error-handler.ts","./src/types/functions.types.ts","./src/pikku-response.ts","./src/http/pikku-http-abstract-response.ts","./src/http/http-routes.types.ts","./src/http/pikku-http-abstract-request.ts","./src/http/http-session-service.ts","./src/services/variables-service.ts","./src/channel/eventhub-service.ts","./src/services/schema-service.ts","./src/channel/channel.types.ts","./src/services/user-session-service.ts","./src/services/jwt-service.ts","./src/services/secret-service.ts","./src/types/core.types.ts","./src/services/content-service.ts","./src/services/logger-console.ts","./src/services/local-variables.ts","./src/services/local-secrets.ts","./src/services/index.ts","./src/errors/errors.ts","./src/http/pikku-http-session-service.ts","./src/permissions.ts","../../node_modules/path-to-regexp/dist/index.d.ts","./src/utils.ts","./src/schema.ts","./src/http/http-route-runner.ts","./src/http/log-http-routes.ts","./src/http/index.ts","./src/channel/channel-runner.ts","./src/channel/log-channels.ts","./src/channel/pikku-abstract-channel-handler.ts","./src/channel/eventhub-forwarder.ts","./src/channel/channel-store.ts","./src/channel/eventhub-store.ts","./src/channel/index.ts","./src/scheduler/scheduler.types.ts","./src/scheduler/scheduler-runner.ts","./src/scheduler/log-schedulers.ts","./src/scheduler/index.ts","./src/index.ts","./src/channel/channel-handler.ts","./src/channel/local/local-channel-handler.ts","./src/channel/local/local-channel-runner.ts","./src/channel/local/local-eventhub-service.ts","./src/channel/local/index.ts","./src/channel/serverless/serverless-channel-runner.ts","./src/channel/serverless/index.ts","./src/errors/index.ts","./src/services/local-content.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts"],"fileIdsList":[[141,184],[141,181,184],[141,183,184],[184],[141,184,189,219],[141,184,185,190,196,197,204,216,227],[141,184,185,186,196,204],[136,137,138,141,184],[141,184,187,228],[141,184,188,189,197,205],[141,184,189,216,224],[141,184,190,192,196,204],[141,183,184,191],[141,184,192,193],[141,184,196],[141,184,194,196],[141,183,184,196],[141,184,196,197,198,216,227],[141,184,196,197,198,211,216,219],[141,179,184,232],[141,179,184,192,196,199,204,216,227],[141,184,196,197,199,200,204,216,224,227],[141,184,199,201,216,224,227],[139,140,141,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],[141,184,196,202],[141,184,203,227],[141,184,192,196,204,216],[141,184,205],[141,184,206],[141,183,184,207],[141,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],[141,184,209],[141,184,210],[141,184,196,211,212],[141,184,211,213,228,230],[141,184,196,216,217,218,219],[141,184,216,218],[141,184,216,217],[141,184,219],[141,184,220],[141,181,184,216],[141,184,196,222,223],[141,184,222,223],[141,184,189,204,216,224],[141,184,225],[141,184,204,226],[141,184,199,210,227],[141,184,189,228],[141,184,216,229],[141,184,203,230],[141,184,231],[141,184,189,196,198,207,216,227,230,232],[141,184,216,233],[141,151,155,184,227],[141,151,184,216,227],[141,146,184],[141,148,151,184,224,227],[141,184,204,224],[141,184,234],[141,146,184,234],[141,148,151,184,204,227],[141,143,144,147,150,184,196,216,227],[141,151,158,184],[141,143,149,184],[141,151,172,173,184],[141,147,151,184,219,227,234],[141,172,184,234],[141,145,146,184,234],[141,151,184],[141,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,173,174,175,176,177,178,184],[141,151,166,184],[141,151,158,159,184],[141,149,151,159,160,184],[141,150,184],[141,143,146,151,184],[141,151,155,159,160,184],[141,155,184],[141,149,151,154,184,227],[141,143,148,151,158,184],[141,184,216],[141,146,151,172,184,232,234],[96,100,108,115,141,184],[96,100,106,109,111,112,141,184],[100,141,184],[85,86,87,88,89,90,91,100,141,184],[94,96,115,116,117,118,119,120,141,184],[128,129,130,141,184],[100,117,141,184],[96,100,110,112,115,127,128,141,184],[94,96,141,184],[105,115,141,184],[96,100,141,184],[132,141,184],[96,100,110,112,115,119,127,141,184],[86,141,184],[86,106,141,184],[85,86,88,89,90,91,92,96,100,105,106,108,109,110,111,141,184,189],[85,86,87,88,89,91,100,141,184],[91,100,141,184],[89,90,91,107,112,113,141,184],[105,112,141,184],[84,85,90,141,184],[84,88,100,141,184],[90,91,92,98,106,141,184],[85,87,88,100,105,112,114,115,121,123,125,141,184],[87,100,141,184],[122,123,124,141,184],[105,123,141,184],[86,87,100,110,122,141,184],[83,95,106,112,141,184],[83,93,95,98,99,101,102,103,104,141,184],[83,101,141,184],[93,99,103,141,184],[93,141,184],[83,141,184],[83,90,92,93,94,95,96,97,98,99,141,184]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"bde31fd423cd93b0eff97197a3f66df7c93e8c0c335cbeb113b7ff1ac35c23f4","impliedFormat":1},{"version":"0c9b1eda8101fd8bf376fad28c6fabf20acfc30d6402a94ee46453a4ee1d5b04","signature":"d6d8e1704f13488e91b5ae6209958d3d76afc84d7e583670f1666371022ea603","impliedFormat":99},{"version":"5a7ebcf5fe8ac590dd03af1bbe426dfed639a3490fb1e5d6b934e45643b8ea1b","impliedFormat":1},{"version":"85a5b10c6dbcb1809f48866639c22faa99016a5fea710f2a41388851fb9ce464","signature":"eb779644b37039365feba0606e13e1cb7f475108d87ad2970e481b757c51924a","impliedFormat":99},{"version":"07f8c4361bb319922e43efc881778c42efaba1a7a6e48cefa6aebb8904bce056","signature":"1f9a384e26dda3a19071df4980597b628fb8245f417f73f1430e671eda8bd8aa","impliedFormat":99},{"version":"a8d7482346160ecc7e59dbb841139b835bb57830be8365d2406ae5dfa7fcaede","signature":"135a6a2e305c158a8e26a114d77d0aac64dd8af32997a9fc4e7ab01c1fad4eb5","impliedFormat":99},{"version":"fbf264ed1294a2377313139a7ffbc1c7c0a1245641fe27c7111b7294123aceed","signature":"4642b2ac614eb714017f6e7f630342cb93c3631d606771b201d560bc8f6c2ee3","impliedFormat":99},{"version":"f338b24ba58ae9f3dd3346e86e8fed7625abdb232b3ac5926c1ce8bacc5ec388","signature":"98f1691ee5a994a18522af4c15ac185f980d1ccdb5861d243214f76d5c827d6b","impliedFormat":99},{"version":"8278399c7b3913a42a92228169f73456f030d8857a594767d33d35346dbfaa28","signature":"dcf79bf2caaf1f2016731f3db7b6caefc20979bd7dffcb8c6b2ca3ef24500f36","impliedFormat":99},{"version":"fd662d6d300875370e1a204cc02390426a08b1f0b7e958863781ab70cb990468","signature":"947b58a52168f50efa7635b297548295e6b414b07ffcbe4596f06f8637e2c02f","impliedFormat":99},{"version":"a4141db86838fa239d5cc744eaebdd400adf79c38179b1c2fe8decc5ad5774fc","signature":"555ddc17e3cc70a65f1d2796c0004739d4d748c7a3d85a867dcc635c1c680d69","impliedFormat":99},{"version":"f460dc79f7250fa2dd7f9d7f15ad9c18168289524b94eee4d63d1a0bd8f66fdb","signature":"07ae4cece96eb084ea1ea8f92dae8106a6ef555cd859211a406a9efb6ab62c0d","impliedFormat":99},{"version":"eae5739206d003069a28b7d894dc9bc2712d5a2459298dce210114de6a512630","signature":"69246ea7d84fde6b17161d65cd5246196a46284d64e12c846ee5eb38efc22f1e","impliedFormat":99},{"version":"7b8c33cc83ddb335bbff1339d2798355ef151f6346490fb7937c542766c966b6","signature":"bdd61b3cc3ff69aa7b588eefcfb7965ef108cf78e273ed2b06b1af9ff3e8895b","impliedFormat":99},{"version":"5ec4eb8589de82657cf64059c9b0c52edd16598de6ea9187f1269c3fafbe087f","signature":"2108e3cae576e470c92459b0812e0c5941cab2d1cb8e6c6a2f65d9e7885e11f1","impliedFormat":99},{"version":"e7472febf27832b804087a998176af3d92b2ca28dd8c4f83dca87a3069ea013e","signature":"cbf63c3e26d69acc1adf61e2c6a917a7c63855dfad75fb2086d9536041d72a9f","impliedFormat":99},{"version":"e7dfe7ed1b29fb54e2ba1bb50b098c46f85f6595f1a67b16930bf2e6f65f553f","signature":"87b6cbf20e6244c7a427c135ca797c63e0128a94a257bf83bedb78b5ca13aa55","impliedFormat":99},{"version":"f34bba872994525b166d1168c033c6c4a9d275f030c517a4932a3d96466df721","signature":"d293df64831379effa58ef7c63edf7b96e59e2f85739d5ac91ac8f27cd772df0","impliedFormat":99},{"version":"3831ffc7a70ac6a71b5eaa6591f759067e97e6118e8746fdbc3515a2484c7294","signature":"9cd18e294c1d4f0ef30b6ce01d428e159c9c91fec7bffd1cdec785ff578f3b3a","impliedFormat":99},{"version":"82a5d4d3ccf1448c9d912d0cecb757e94c5d4a54c98f9e771c3e5ef08bbb1163","signature":"b4594f029996adc443729bba8ff83f2d98a00a02e10422c1b653ee9a7f1f3fb3","impliedFormat":99},{"version":"4c450f5553dd582c8e148c7522dab4dc20a25dbbceb00c21307ca3141a937bd6","signature":"2435079d0ee60718fb4b36adbd00a33649ec2ef6b7d2119fd8525307af38827b","impliedFormat":99},{"version":"46e36680394e51afe9bb5ecf8313d1f77ae93604388f169ce93ee6614b1fc837","signature":"4bfbe6eec6d673e4ec5e99b0a30fbee091958e5f3198d67604de383bb11a8e6b","impliedFormat":99},{"version":"1240fbd00ab56644a547be4447d9b0e56bdcd733dd427a9d5c6bbdbe7299e576","signature":"7894c76a64732cafb90ada2894fa42005b55ae01ee602c1fc43dc12e19264645","impliedFormat":99},{"version":"96ba929cbb30b4bd9ee541a11a2ee4e36a2180a1baa0a9a7e1bc23a0b07c8437","signature":"747f007f73d5f0096f6df1396afef18bcd3d98f336bfaf9a0f582d5ebb7e80a2","impliedFormat":99},{"version":"1660ea5a2e8a29b688ebbe3745c2f28ac5e7eaf0984798910e896bbae0d8ed7f","signature":"3804e47562f048ba98f1e5a444e7e5407b565ae8edcd4ace9668a846e351388a","impliedFormat":99},{"version":"b160750ea5b392ab1ae1845d04b481bba00823670e0502df10f7dadcaf6ce7b0","signature":"857cbf5f3f0a0e99d207cf7fa0ebfcf5aa404fef9f7f545b66b04ae97c645d1c","impliedFormat":99},{"version":"75dbf3fa97d4604233f841d980cc4d1b84d519a3d5c89e34949e9a860a59a38e","signature":"cf21e19ef3f9a12497bf12504a455b299c456f7aa4f44eff54202636c0fe0c8d","impliedFormat":99},{"version":"ba82ccb10b660ba4e631cab0de696935ae02ffc54bc1693f821d577e6b17165b","impliedFormat":1},{"version":"902534fcb369bcf61b2afb1a07294096d820c431e3929b3f19cc9f5f050f76cb","signature":"9179b87d0dae14402bedfde99dbc42b824cf4652faa92d7358af232eef2e3efe","impliedFormat":99},{"version":"68daea372e627f2292ea0b973356eb7bff3ab80d3c61a8a2751a8785f8035f81","signature":"a0bfb27834903207b94b7123f5f584ea8432fe219a7a5636a452111c7c92f274","impliedFormat":99},{"version":"94d1cbb4ea81dc34c53b16809c7c592ea28938b74f6389ba4606f7d2c0afe43f","signature":"f7ad3b396c07915807d78069cd6add9bf32d6559665ec3cba8f10235cb9437e7","impliedFormat":99},{"version":"7bc1c544c0763d0ee42284d64c77c0271784c07b27f437500c5bf8976f091f8b","signature":"439cd298e3a7f9cd1fdbfa31d1ca8942192b3accbcf369586aabf533d02bdd73","impliedFormat":99},{"version":"0afaedf454e31220d17fd300dc15b9163dfdd9c418373cd66b96766dd5c832ca","signature":"74a995fc829f495b6496e32fe5de5ea06d756e5e972145860e4a09278f3ff98d","impliedFormat":99},{"version":"43fea4ff44a3861cafeacffe45a4b04776e7e10aa212fa98010c40341cbe58c5","signature":"2aa2d614e8e018b24c7b5028685ad02892f51f13fa16d58ab5f9ada912b915c6","impliedFormat":99},{"version":"3a783f4f77b1aa96f4b01939db2385e50dab0c2586a6002b5e455d9b10e6cf23","signature":"fc7c785f58fc7994ebbd05ff48e90eb7820bbd2d6c106e87b77aa92ce1a8491a","impliedFormat":99},{"version":"52cf942434e2cbe623171c137cbe7d416aeac6820531de138e25a0b288d4132a","signature":"15ffc6427d689a7e7efec9ba88d088c7ea5d1517d00935876e79a51cbdf2af9e","impliedFormat":99},{"version":"85918e3682a94f214f348f1a14d450fe591d5989b038c112362c95623b1f3ce3","signature":"8d5af0d816312617b6985897ea490c3fc37ec2b689320ba221d8f6a28aa937c4","impliedFormat":99},{"version":"b8987aa837d77c60c3e53f9478d5a3898a53ca9a1714a47043f31d8f3fefb658","signature":"c58c2df361795481bbb90b2c162662b9aae3a71d3b78bd17b04e387626a9c194","impliedFormat":99},{"version":"e98ad6a408069d53689fa0eb977800ff020aea09782c7f1d0da6f9826fd37c07","signature":"0e84d0bd49e4d406121663f461a18b30d22553c3aca066b82281a641e4b3fa9c","impliedFormat":99},{"version":"77b1f1cbdf9f819a2a42ff63f8d9ecbbe9aba77894fe971be23e6ce9d30065a2","signature":"4fc87fa701a9290b3055bb8fc17515eeaa28d42e3be8bc012c652d783c36a5c8","impliedFormat":99},{"version":"e1567503d0f7b03353b78387797701ab5ee102e1d88138d117c291d9fe1b4c95","signature":"c0e598e378769553b2d8544de62a9ad8816e6b85269ad001d99a565dddac0bb6","impliedFormat":99},{"version":"a9a0a4865fd9be225d24396062569644fb70e6a0eb267c28cb9d8c88e4bbba06","signature":"6e8eb51f62ad791c62c0453c140e67d4d0c1a7610735dd54f287f488061ef736","impliedFormat":99},{"version":"55ea9288b8b0a0239564fc9593dfafb4a81fa06f235ca64e0e42d7da66e90b87","signature":"813c86102644d3be59ce59e4a5192abe43983a186f72f2f0dd56f44d37cac4fe","impliedFormat":99},{"version":"c7ba1ca9b8d25d8560bb7f2f153a1291d0e917d43473247096e965b7c87b5cfc","signature":"26d137591b207c4e5f29b34b4bbf5a9a26888841e020466d4fab65b4b19a3faa","impliedFormat":99},{"version":"835063aab93eecb2425dee41a4b6d6ce482aa90fb4be37ddfebe3729d84da171","signature":"5f8a3a0cd760bb6a4384233c37e4b6b55a8c45ac81165ba00aa66fab21d571ca","impliedFormat":99},{"version":"b59c0e2279a09aeaa168e7a3a9714e33928e94dee2915d3401aeeff2dd31eb2e","signature":"6e164d420ed5c79d91b34587ffde8cd168bf79dfa5350a69eec72bb1256425b9","impliedFormat":99},{"version":"a3d1c71efa01c2ee28bdc5c639f4e22a46848feb7d8c0b498523ed281b8182ee","signature":"c9a46c339a686b67bfe6f54b9775d4ce5126559178d474c5efef5b2c30acf7d1","impliedFormat":99},{"version":"f74d3179ff523feffa04e07333b97d43b08b3e85249378e498072625b7f18c32","signature":"fd1d5be1c8f84976bf15889b168241240338e71860c8241849e38bdc32ce7d09","impliedFormat":99},{"version":"5750cf945b62afe4bab47b5fd7f8017b461af5e4cc937e45d1ac2f6e0d24846d","signature":"2d5742531c4f0d0fffd5af8625a171c9fae960e0802d8d4023426dcd07f72620","impliedFormat":99},{"version":"61f99efd21d9abbb8c6ac936298b0ff114c5df78aece35b862bce8d1de964f2c","signature":"595aae9166f140eb6396b5b1d8e9d56dc75e48d4c6b4d7209d8d6a3b3af268df","impliedFormat":99},{"version":"16b4d964345bbe62682d76380c1d89b5b4a276967beafbbcf93bdb9f9d18d040","signature":"c214854e5dca8e0efe6b41276869b43ab9cd687c42cd0b0bb2baf587ee202a05","impliedFormat":99},{"version":"acaac745478015289e38774deb5266dcaa63a9bbc01d09a4d134b6f372e2562e","signature":"3051f2c4dd86ce70a144a506e1dffbcbf7739fe84b6bd5dbe57e44457b7ae5e9","impliedFormat":99},{"version":"5a02696ef43cc74d954594dd09bbdb416498de3ec8b6abe0db2a80677b99fd22","signature":"89aa3cc6438ab46c2edcf993c04143579ee7f39809972d3fae22ad37f7e420dc","impliedFormat":99},{"version":"efa94f89ea1ea7d8614374eaebbea7d4308258ad3f3e9da5725b14b2af478bf7","signature":"404f97b47fc2905a16a1a9d789ce222329463ad67d6d6a9c4167e93c044d93dc","impliedFormat":99},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"13af9e8fb6757946c48117315866177b95e554d1e773577bb6ca6e40083b6d73","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f550093acc8ad4f64ad1c7e96153615f3351b81919dae5473375b81e1e8f272c","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ff5a53a58e756d2661b73ba60ffe274231a4432d21f7a2d0d9e4f6aa99f4283","impliedFormat":1},{"version":"1e289f30a48126935a5d408a91129a13a59c9b0f8c007a816f9f16ef821e144e","impliedFormat":1},{"version":"2ea254f944dfe131df1264d1fb96e4b1f7d110195b21f1f5dbb68fdd394e5518","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"fcc4b974b1cf7eca347490f11143ab2f5bc3c449b2073eb4d9494f6a16651e75","affectsGlobalScope":true,"impliedFormat":1},{"version":"23459c1915878a7c1e86e8bdb9c187cddd3aea105b8b1dfce512f093c969bc7e","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"1dc73f8854e5c4506131c4d95b3a6c24d0c80336d3758e95110f4c7b5cb16397","affectsGlobalScope":true,"impliedFormat":1},{"version":"5f6f1d54779d0b9ed152b0516b0958cd34889764c1190434bbf18e7a8bb884cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"1cbae62b67f180291d211f0e1045fb923a8ec800cfbf9caa13223d769013dae2","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"92949391eab12082218333a61b9070996f404ad662ff488d48ebb09564963d2b","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb094bb347d7df3380299eb69836c2c8758626ecf45917577707c03cf816b6f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1}],"root":[83,[85,108],[110,135]],"options":{"allowJs":false,"composite":true,"declaration":true,"emitDecoratorMetadata":false,"experimentalDecorators":false,"importHelpers":false,"module":100,"noImplicitAny":false,"noUnusedLocals":true,"outDir":"./dist","removeComments":false,"rootDir":"./src","skipLibCheck":true,"sourceMap":false,"strict":true,"strictNullChecks":true,"target":99,"useUnknownInCatchVariables":false},"referencedMap":[[142,1],[84,1],[109,1],[80,1],[81,1],[15,1],[13,1],[14,1],[19,1],[18,1],[2,1],[20,1],[21,1],[22,1],[23,1],[24,1],[25,1],[26,1],[27,1],[3,1],[28,1],[29,1],[4,1],[30,1],[34,1],[31,1],[32,1],[33,1],[35,1],[36,1],[37,1],[5,1],[38,1],[39,1],[40,1],[41,1],[6,1],[45,1],[42,1],[43,1],[44,1],[46,1],[7,1],[47,1],[52,1],[53,1],[48,1],[49,1],[50,1],[51,1],[8,1],[57,1],[54,1],[55,1],[56,1],[58,1],[9,1],[59,1],[60,1],[61,1],[63,1],[62,1],[64,1],[65,1],[10,1],[66,1],[67,1],[68,1],[11,1],[69,1],[70,1],[71,1],[72,1],[73,1],[1,1],[74,1],[75,1],[12,1],[78,1],[77,1],[82,1],[76,1],[79,1],[17,1],[16,1],[181,2],[182,2],[183,3],[141,4],[184,5],[185,6],[186,7],[136,1],[139,8],[137,1],[138,1],[187,9],[188,10],[189,11],[190,12],[191,13],[192,14],[193,14],[195,15],[194,16],[196,17],[197,18],[198,19],[180,20],[140,1],[199,21],[200,22],[201,23],[234,24],[202,25],[203,26],[204,27],[205,28],[206,29],[207,30],[208,31],[209,32],[210,33],[211,34],[212,34],[213,35],[214,1],[215,1],[216,36],[218,37],[217,38],[219,39],[220,40],[221,41],[222,42],[223,43],[224,44],[225,45],[226,46],[227,47],[228,48],[229,49],[230,50],[231,51],[232,52],[233,53],[158,54],[168,55],[157,54],[178,56],[149,57],[148,58],[177,59],[171,60],[176,61],[151,62],[165,63],[150,64],[174,65],[146,66],[145,59],[175,67],[147,68],[152,69],[153,1],[156,69],[143,1],[179,70],[169,71],[160,72],[161,73],[163,74],[159,75],[162,76],[172,59],[154,77],[155,78],[164,79],[144,80],[167,71],[166,69],[170,1],[173,81],[127,82],[115,83],[119,84],[96,85],[118,1],[94,1],[120,1],[121,86],[131,87],[128,88],[129,89],[130,90],[116,91],[117,92],[133,93],[132,94],[86,1],[106,95],[134,96],[112,97],[90,98],[92,99],[114,100],[113,101],[91,102],[89,103],[107,104],[126,105],[108,106],[85,1],[88,1],[125,107],[124,108],[123,109],[122,106],[111,110],[101,1],[105,111],[98,84],[135,112],[104,113],[103,114],[102,115],[83,1],[95,1],[99,1],[97,84],[93,1],[100,116],[87,84],[110,115]],"latestChangedDtsFile":"./dist/services/local-content.d.ts","version":"5.7.3"}