@rockcarver/frodo-lib 0.18.7 → 0.18.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.18.8] - 2023-02-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Support for node 19.
|
|
15
|
+
|
|
10
16
|
## [0.18.7] - 2023-02-16
|
|
11
17
|
|
|
12
18
|
## [0.18.6] - 2023-02-16
|
|
@@ -1066,7 +1072,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1066
1072
|
- Fixed problem with adding connection profiles
|
|
1067
1073
|
- Miscellaneous bug fixes
|
|
1068
1074
|
|
|
1069
|
-
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.18.
|
|
1075
|
+
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.18.8...HEAD
|
|
1076
|
+
|
|
1077
|
+
[0.18.8]: https://github.com/rockcarver/frodo-lib/compare/v0.18.7...v0.18.8
|
|
1070
1078
|
|
|
1071
1079
|
[0.18.7]: https://github.com/rockcarver/frodo-lib/compare/v0.18.6...v0.18.7
|
|
1072
1080
|
|
|
@@ -119,7 +119,8 @@ function _scheduleShutdown() {
|
|
|
119
119
|
}
|
|
120
120
|
function getFrodoCommand() {
|
|
121
121
|
try {
|
|
122
|
-
if (
|
|
122
|
+
if (mode !== _utils.MODES.RECORD) (0, _Console.debugMessage)("SetupPollyForFrodoLib.getFrodoCommand: process.argv=".concat(process.argv));
|
|
123
|
+
if (!process.argv[1].endsWith('frodo') && !process.argv[1].endsWith('frodo.exe') && !process.argv[1].endsWith('app.js')) {
|
|
123
124
|
return _path.default.parse(process.argv[1]).name.replace('-', '/');
|
|
124
125
|
}
|
|
125
126
|
return process.argv[2];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["__dirname","path","dirname","fileURLToPath","FRODO_MOCK_HOSTS","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","JSON","parse","stringify","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","ms","Promise","resolve","setTimeout","countdown","ttl","timeout","scheduleShutdown","polly","console","log","getFrodoCommand","stop","argv","endsWith","name","error","printMessage","setupPollyForFrodoLib","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","debugMessage","config"],"sources":["utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { LogLevelDesc } from 'loglevel';\nimport { debugMessage, printMessage } from '../ops/utils/Console';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-service-accounts.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return JSON.parse(\n JSON.stringify({\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n })\n );\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy.body = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown(polly: Polly) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand()}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand()}' stopped.`);\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand() {\n try {\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe')\n ) {\n return path.parse(process.argv[1]).name.replace('-', '/');\n }\n return process.argv[2];\n } catch (error) {\n printMessage(`SetupPollyForFrodoLib.getFrodoCommand: ${error}`, 'error');\n printMessage(process.argv, 'error');\n return 'error';\n }\n}\n\nexport function setupPollyForFrodoLib(\n matchRequestsBy = defaultMatchRequestsBy()\n): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand()}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server.any('/am/json/*').recordingName(`${getFrodoCommand()}/am`);\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand()}/openidm`);\n polly.server\n .any('/environment/*')\n .recordingName(`${getFrodoCommand()}/environment`);\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand()}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand()}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand()}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server.any().on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown(polly);\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage(`Polly config:`);\n debugMessage(polly.config);\n }\n\n return polly;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["__dirname","path","dirname","fileURLToPath","FRODO_MOCK_HOSTS","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","JSON","parse","stringify","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","ms","Promise","resolve","setTimeout","countdown","ttl","timeout","scheduleShutdown","polly","console","log","getFrodoCommand","stop","debugMessage","argv","endsWith","name","error","printMessage","setupPollyForFrodoLib","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","config"],"sources":["utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { LogLevelDesc } from 'loglevel';\nimport { debugMessage, printMessage } from '../ops/utils/Console';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-service-accounts.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return JSON.parse(\n JSON.stringify({\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n })\n );\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy.body = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown(polly: Polly) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand()}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand()}' stopped.`);\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand() {\n try {\n if (mode !== MODES.RECORD)\n debugMessage(\n `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`\n );\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n return path.parse(process.argv[1]).name.replace('-', '/');\n }\n return process.argv[2];\n } catch (error) {\n printMessage(`SetupPollyForFrodoLib.getFrodoCommand: ${error}`, 'error');\n printMessage(process.argv, 'error');\n return 'error';\n }\n}\n\nexport function setupPollyForFrodoLib(\n matchRequestsBy = defaultMatchRequestsBy()\n): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand()}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server.any('/am/json/*').recordingName(`${getFrodoCommand()}/am`);\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand()}/openidm`);\n polly.server\n .any('/environment/*')\n .recordingName(`${getFrodoCommand()}/environment`);\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand()}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand()}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand()}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server.any().on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown(polly);\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage(`Polly config:`);\n debugMessage(polly.config);\n }\n\n return polly;\n}\n"],"mappings":"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"}
|
|
@@ -93,7 +93,8 @@ argv:
|
|
|
93
93
|
*/
|
|
94
94
|
function getFrodoCommand() {
|
|
95
95
|
try {
|
|
96
|
-
if (
|
|
96
|
+
if (mode !== MODES.RECORD) debugMessage(`SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`);
|
|
97
|
+
if (!process.argv[1].endsWith('frodo') && !process.argv[1].endsWith('frodo.exe') && !process.argv[1].endsWith('app.js')) {
|
|
97
98
|
return path.parse(process.argv[1]).name.replace('-', '/');
|
|
98
99
|
}
|
|
99
100
|
return process.argv[2];
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/SetupPollyForFrodoLib.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/utils/SetupPollyForFrodoLib.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAmItC,wBAAgB,qBAAqB,CACnC,eAAe,MAA2B,GACzC,KAAK,CAsEP","file":"SetupPollyForFrodoLib.d.ts","sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { LogLevelDesc } from 'loglevel';\nimport { debugMessage, printMessage } from '../ops/utils/Console';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-service-accounts.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return JSON.parse(\n JSON.stringify({\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n })\n );\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy.body = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown(polly: Polly) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand()}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand()}' stopped.`);\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand() {\n try {\n if (mode !== MODES.RECORD)\n debugMessage(\n `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`\n );\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n return path.parse(process.argv[1]).name.replace('-', '/');\n }\n return process.argv[2];\n } catch (error) {\n printMessage(`SetupPollyForFrodoLib.getFrodoCommand: ${error}`, 'error');\n printMessage(process.argv, 'error');\n return 'error';\n }\n}\n\nexport function setupPollyForFrodoLib(\n matchRequestsBy = defaultMatchRequestsBy()\n): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand()}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server.any('/am/json/*').recordingName(`${getFrodoCommand()}/am`);\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand()}/openidm`);\n polly.server\n .any('/environment/*')\n .recordingName(`${getFrodoCommand()}/environment`);\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand()}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand()}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand()}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server.any().on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown(polly);\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage(`Polly config:`);\n debugMessage(polly.config);\n }\n\n return polly;\n}\n"]}
|