@decohere/create 0.0.1-dev.18 → 0.0.1-dev.19

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 (124) hide show
  1. package/commonjs/src/cli.js +10 -6
  2. package/commonjs/src/domain/prompt.js +55 -0
  3. package/commonjs/src/models/package-json.model.js +2 -2
  4. package/commonjs/src/runner.js +56 -0
  5. package/commonjs/src/version.js +32 -0
  6. package/commonjs/src/webapi/features/auth.feature.js +2 -2
  7. package/commonjs/src/webapi/features/database.feature.js +3 -3
  8. package/commonjs/src/webapi/features/finalize.feature.js +11 -6
  9. package/commonjs/src/webapi/features/postman.feature.js +4 -4
  10. package/commonjs/src/webapi/models/api-package-json.model.js +2 -2
  11. package/es6/src/cli.js +10 -6
  12. package/es6/src/domain/prompt.js +37 -0
  13. package/es6/src/models/package-json.model.js +2 -2
  14. package/es6/src/runner.js +55 -0
  15. package/es6/src/version.js +22 -0
  16. package/es6/src/webapi/features/auth.feature.js +2 -2
  17. package/es6/src/webapi/features/database.feature.js +3 -3
  18. package/es6/src/webapi/features/finalize.feature.js +11 -6
  19. package/es6/src/webapi/features/postman.feature.js +4 -4
  20. package/es6/src/webapi/models/api-package-json.model.js +2 -2
  21. package/package.json +2 -2
  22. package/types/src/runner.d.ts +13 -0
  23. package/commonjs/v1/cli.js +0 -15
  24. package/commonjs/v1/domain/class-model.js +0 -106
  25. package/commonjs/v1/domain/compose.model.js +0 -74
  26. package/commonjs/v1/domain/context.js +0 -53
  27. package/commonjs/v1/domain/devcontainer.model.js +0 -116
  28. package/commonjs/v1/domain/dockerfile.model.js +0 -62
  29. package/commonjs/v1/domain/feature.js +0 -19
  30. package/commonjs/v1/domain/import-map.js +0 -74
  31. package/commonjs/v1/domain/index.js +0 -68
  32. package/commonjs/v1/domain/prompt.js +0 -45
  33. package/commonjs/v1/domain/workflow.js +0 -37
  34. package/commonjs/v1/features/api-core/feature.js +0 -103
  35. package/commonjs/v1/features/api-core/hello-controller.model.js +0 -100
  36. package/commonjs/v1/features/api-core/main-ts.model.js +0 -85
  37. package/commonjs/v1/features/api-core/scaffold-files.template.js +0 -158
  38. package/commonjs/v1/features/auth0/auth0-cli.js +0 -151
  39. package/commonjs/v1/features/auth0/feature.js +0 -187
  40. package/commonjs/v1/features/auth0/models.js +0 -14
  41. package/commonjs/v1/features/auth0/prod-config.template.js +0 -19
  42. package/commonjs/v1/features/cli-core/feature.js +0 -37
  43. package/commonjs/v1/features/cli-core/scaffold-files.template.js +0 -103
  44. package/commonjs/v1/features/devcontainer/feature.js +0 -38
  45. package/commonjs/v1/features/finalize/feature.js +0 -48
  46. package/commonjs/v1/features/postgresql/feature.js +0 -81
  47. package/commonjs/v1/features/postgresql/models.js +0 -14
  48. package/commonjs/v1/features/postman/collection.template.js +0 -80
  49. package/commonjs/v1/features/postman/environment.template.js +0 -24
  50. package/commonjs/v1/features/postman/feature.js +0 -192
  51. package/commonjs/v1/features/typeorm/feature.js +0 -66
  52. package/commonjs/v1/features/typeorm/scaffold-files.template.js +0 -80
  53. package/commonjs/v1/scaffold.js +0 -50
  54. package/commonjs/v1/version.js +0 -32
  55. package/commonjs/v1/workflows/api.js +0 -29
  56. package/commonjs/v1/workflows/cli.js +0 -19
  57. package/es6/v1/cli.js +0 -11
  58. package/es6/v1/domain/class-model.js +0 -104
  59. package/es6/v1/domain/compose.model.js +0 -61
  60. package/es6/v1/domain/context.js +0 -37
  61. package/es6/v1/domain/devcontainer.model.js +0 -104
  62. package/es6/v1/domain/dockerfile.model.js +0 -52
  63. package/es6/v1/domain/feature.js +0 -9
  64. package/es6/v1/domain/import-map.js +0 -64
  65. package/es6/v1/domain/index.js +0 -11
  66. package/es6/v1/domain/prompt.js +0 -27
  67. package/es6/v1/domain/workflow.js +0 -24
  68. package/es6/v1/features/api-core/feature.js +0 -93
  69. package/es6/v1/features/api-core/hello-controller.model.js +0 -96
  70. package/es6/v1/features/api-core/main-ts.model.js +0 -74
  71. package/es6/v1/features/api-core/scaffold-files.template.js +0 -116
  72. package/es6/v1/features/auth0/auth0-cli.js +0 -116
  73. package/es6/v1/features/auth0/feature.js +0 -136
  74. package/es6/v1/features/auth0/models.js +0 -4
  75. package/es6/v1/features/auth0/prod-config.template.js +0 -9
  76. package/es6/v1/features/cli-core/feature.js +0 -27
  77. package/es6/v1/features/cli-core/scaffold-files.template.js +0 -73
  78. package/es6/v1/features/devcontainer/feature.js +0 -28
  79. package/es6/v1/features/finalize/feature.js +0 -38
  80. package/es6/v1/features/postgresql/feature.js +0 -71
  81. package/es6/v1/features/postgresql/models.js +0 -4
  82. package/es6/v1/features/postman/collection.template.js +0 -70
  83. package/es6/v1/features/postman/environment.template.js +0 -14
  84. package/es6/v1/features/postman/feature.js +0 -141
  85. package/es6/v1/features/typeorm/feature.js +0 -56
  86. package/es6/v1/features/typeorm/scaffold-files.template.js +0 -56
  87. package/es6/v1/scaffold.js +0 -40
  88. package/es6/v1/version.js +0 -22
  89. package/es6/v1/workflows/api.js +0 -25
  90. package/es6/v1/workflows/cli.js +0 -9
  91. package/types/v1/cli.d.ts +0 -2
  92. package/types/v1/domain/class-model.d.ts +0 -70
  93. package/types/v1/domain/compose.model.d.ts +0 -25
  94. package/types/v1/domain/context.d.ts +0 -36
  95. package/types/v1/domain/devcontainer.model.d.ts +0 -35
  96. package/types/v1/domain/dockerfile.model.d.ts +0 -11
  97. package/types/v1/domain/feature.d.ts +0 -29
  98. package/types/v1/domain/import-map.d.ts +0 -24
  99. package/types/v1/domain/index.d.ts +0 -12
  100. package/types/v1/domain/workflow.d.ts +0 -14
  101. package/types/v1/features/api-core/feature.d.ts +0 -2
  102. package/types/v1/features/api-core/hello-controller.model.d.ts +0 -9
  103. package/types/v1/features/api-core/main-ts.model.d.ts +0 -31
  104. package/types/v1/features/api-core/scaffold-files.template.d.ts +0 -10
  105. package/types/v1/features/auth0/auth0-cli.d.ts +0 -22
  106. package/types/v1/features/auth0/feature.d.ts +0 -2
  107. package/types/v1/features/auth0/models.d.ts +0 -5
  108. package/types/v1/features/auth0/prod-config.template.d.ts +0 -1
  109. package/types/v1/features/cli-core/feature.d.ts +0 -2
  110. package/types/v1/features/cli-core/scaffold-files.template.d.ts +0 -6
  111. package/types/v1/features/devcontainer/feature.d.ts +0 -2
  112. package/types/v1/features/finalize/feature.d.ts +0 -2
  113. package/types/v1/features/postgresql/feature.d.ts +0 -2
  114. package/types/v1/features/postgresql/models.d.ts +0 -6
  115. package/types/v1/features/postman/collection.template.d.ts +0 -1
  116. package/types/v1/features/postman/environment.template.d.ts +0 -6
  117. package/types/v1/features/postman/feature.d.ts +0 -2
  118. package/types/v1/features/typeorm/feature.d.ts +0 -2
  119. package/types/v1/features/typeorm/scaffold-files.template.d.ts +0 -9
  120. package/types/v1/scaffold.d.ts +0 -3
  121. package/types/v1/workflows/api.d.ts +0 -8
  122. package/types/v1/workflows/cli.d.ts +0 -1
  123. /package/types/{v1 → src}/domain/prompt.d.ts +0 -0
  124. /package/types/{v1 → src}/version.d.ts +0 -0
@@ -1,103 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get MAIN_TS () {
13
- return MAIN_TS;
14
- },
15
- get TSCONFIG () {
16
- return TSCONFIG;
17
- },
18
- get VSCODE_LAUNCH_JSON () {
19
- return VSCODE_LAUNCH_JSON;
20
- },
21
- get appPackageJson () {
22
- return appPackageJson;
23
- },
24
- get rootPackageJson () {
25
- return rootPackageJson;
26
- },
27
- get vscodeSettingsJson () {
28
- return vscodeSettingsJson;
29
- }
30
- });
31
- const _version = require("../../version.js");
32
- const TSCONFIG = JSON.stringify({
33
- compilerOptions: {
34
- target: "ES2022",
35
- module: "NodeNext",
36
- moduleResolution: "NodeNext",
37
- strict: true,
38
- skipLibCheck: true
39
- },
40
- include: [
41
- "projects"
42
- ]
43
- }, null, 2);
44
- const VSCODE_LAUNCH_JSON = JSON.stringify({
45
- version: "0.2.0",
46
- configurations: [
47
- {
48
- name: "Build",
49
- type: "node",
50
- request: "launch",
51
- runtimeExecutable: "pnpm",
52
- runtimeArgs: [
53
- "build"
54
- ],
55
- console: "integratedTerminal",
56
- cwd: `\${workspaceFolder}`
57
- },
58
- {
59
- name: "Serve / Dev",
60
- type: "node",
61
- request: "launch",
62
- runtimeExecutable: "pnpm",
63
- runtimeArgs: [
64
- "dev"
65
- ],
66
- console: "integratedTerminal",
67
- cwd: `\${workspaceFolder}`
68
- }
69
- ]
70
- }, null, 2);
71
- function rootPackageJson(name) {
72
- return JSON.stringify({
73
- name,
74
- version: "0.0.1",
75
- type: "module",
76
- scripts: {
77
- build: "forge build",
78
- "build:watch": "forge build --watch",
79
- dev: "flux serve"
80
- },
81
- devDependencies: {
82
- "@decohere/terminal": _version.CREATE_VERSION,
83
- typescript: "^6.0.3"
84
- }
85
- }, null, 2);
86
- }
87
- function appPackageJson(name) {
88
- return JSON.stringify({
89
- name: `@${name}/app`,
90
- version: "0.0.1",
91
- type: "module",
92
- main: "src/main.ts"
93
- }, null, 2);
94
- }
95
- function vscodeSettingsJson(name) {
96
- return JSON.stringify({
97
- "window.title": `${name}\${separator}\${activeEditorShort}`,
98
- "window.titleSeparator": " | "
99
- }, null, 2);
100
- }
101
- const MAIN_TS = `console.log("Hello from Decohere!");\n`;
102
-
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9jbGktY29yZS9zY2FmZm9sZC1maWxlcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDUkVBVEVfVkVSU0lPTiB9IGZyb20gXCIuLi8uLi92ZXJzaW9uLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBUU0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XG5cdFx0XHR0YXJnZXQ6IFwiRVMyMDIyXCIsXG5cdFx0XHRtb2R1bGU6IFwiTm9kZU5leHRcIixcblx0XHRcdG1vZHVsZVJlc29sdXRpb246IFwiTm9kZU5leHRcIixcblx0XHRcdHN0cmljdDogdHJ1ZSxcblx0XHRcdHNraXBMaWJDaGVjazogdHJ1ZSxcblx0XHR9LFxuXHRcdGluY2x1ZGU6IFtcInByb2plY3RzXCJdLFxuXHR9LFxuXHRudWxsLFxuXHQyLFxuKTtcblxuZXhwb3J0IGNvbnN0IFZTQ09ERV9MQVVOQ0hfSlNPTiA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0dmVyc2lvbjogXCIwLjIuMFwiLFxuXHRcdGNvbmZpZ3VyYXRpb25zOiBbXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiQnVpbGRcIixcblx0XHRcdFx0dHlwZTogXCJub2RlXCIsXG5cdFx0XHRcdHJlcXVlc3Q6IFwibGF1bmNoXCIsXG5cdFx0XHRcdHJ1bnRpbWVFeGVjdXRhYmxlOiBcInBucG1cIixcblx0XHRcdFx0cnVudGltZUFyZ3M6IFtcImJ1aWxkXCJdLFxuXHRcdFx0XHRjb25zb2xlOiBcImludGVncmF0ZWRUZXJtaW5hbFwiLFxuXHRcdFx0XHRjd2Q6IGBcXCR7d29ya3NwYWNlRm9sZGVyfWAsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiBcIlNlcnZlIC8gRGV2XCIsXG5cdFx0XHRcdHR5cGU6IFwibm9kZVwiLFxuXHRcdFx0XHRyZXF1ZXN0OiBcImxhdW5jaFwiLFxuXHRcdFx0XHRydW50aW1lRXhlY3V0YWJsZTogXCJwbnBtXCIsXG5cdFx0XHRcdHJ1bnRpbWVBcmdzOiBbXCJkZXZcIl0sXG5cdFx0XHRcdGNvbnNvbGU6IFwiaW50ZWdyYXRlZFRlcm1pbmFsXCIsXG5cdFx0XHRcdGN3ZDogYFxcJHt3b3Jrc3BhY2VGb2xkZXJ9YCxcblx0XHRcdH0sXG5cdFx0XSxcblx0fSxcblx0bnVsbCxcblx0Mixcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiByb290UGFja2FnZUpzb24obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuXHRcdHtcblx0XHRcdG5hbWUsXG5cdFx0XHR2ZXJzaW9uOiBcIjAuMC4xXCIsXG5cdFx0XHR0eXBlOiBcIm1vZHVsZVwiLFxuXHRcdFx0c2NyaXB0czoge1xuXHRcdFx0XHRidWlsZDogXCJmb3JnZSBidWlsZFwiLFxuXHRcdFx0XHRcImJ1aWxkOndhdGNoXCI6IFwiZm9yZ2UgYnVpbGQgLS13YXRjaFwiLFxuXHRcdFx0XHRkZXY6IFwiZmx1eCBzZXJ2ZVwiLFxuXHRcdFx0fSxcblx0XHRcdGRldkRlcGVuZGVuY2llczoge1xuXHRcdFx0XHRcIkBkZWNvaGVyZS90ZXJtaW5hbFwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdFx0dHlwZXNjcmlwdDogXCJeNi4wLjNcIixcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBQYWNrYWdlSnNvbihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG5cdFx0e1xuXHRcdFx0bmFtZTogYEAke25hbWV9L2FwcGAsXG5cdFx0XHR2ZXJzaW9uOiBcIjAuMC4xXCIsXG5cdFx0XHR0eXBlOiBcIm1vZHVsZVwiLFxuXHRcdFx0bWFpbjogXCJzcmMvbWFpbi50c1wiLFxuXHRcdH0sXG5cdFx0bnVsbCxcblx0XHQyLFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdnNjb2RlU2V0dGluZ3NKc29uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRcIndpbmRvdy50aXRsZVwiOiBgJHtuYW1lfVxcJHtzZXBhcmF0b3J9XFwke2FjdGl2ZUVkaXRvclNob3J0fWAsXG5cdFx0XHRcIndpbmRvdy50aXRsZVNlcGFyYXRvclwiOiBcIiB8IFwiLFxuXHRcdH0sXG5cdFx0bnVsbCxcblx0XHQyLFxuXHQpO1xufVxuXG5leHBvcnQgY29uc3QgTUFJTl9UUyA9IGBjb25zb2xlLmxvZyhcIkhlbGxvIGZyb20gRGVjb2hlcmUhXCIpO1xcbmA7XG4iXSwibmFtZXMiOlsiTUFJTl9UUyIsIlRTQ09ORklHIiwiVlNDT0RFX0xBVU5DSF9KU09OIiwiYXBwUGFja2FnZUpzb24iLCJyb290UGFja2FnZUpzb24iLCJ2c2NvZGVTZXR0aW5nc0pzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiY29tcGlsZXJPcHRpb25zIiwidGFyZ2V0IiwibW9kdWxlIiwibW9kdWxlUmVzb2x1dGlvbiIsInN0cmljdCIsInNraXBMaWJDaGVjayIsImluY2x1ZGUiLCJ2ZXJzaW9uIiwiY29uZmlndXJhdGlvbnMiLCJuYW1lIiwidHlwZSIsInJlcXVlc3QiLCJydW50aW1lRXhlY3V0YWJsZSIsInJ1bnRpbWVBcmdzIiwiY29uc29sZSIsImN3ZCIsInNjcmlwdHMiLCJidWlsZCIsImRldiIsImRldkRlcGVuZGVuY2llcyIsIkNSRUFURV9WRVJTSU9OIiwidHlwZXNjcmlwdCIsIm1haW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBMEZhQTtlQUFBQTs7UUF4RkFDO2VBQUFBOztRQWVBQztlQUFBQTs7UUFpREdDO2VBQUFBOztRQXJCQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7O3lCQS9FZTtBQUV4QixNQUFNSixXQUFXSyxLQUFLQyxTQUFTLENBQ3JDO0lBQ0NDLGlCQUFpQjtRQUNoQkMsUUFBUTtRQUNSQyxRQUFRO1FBQ1JDLGtCQUFrQjtRQUNsQkMsUUFBUTtRQUNSQyxjQUFjO0lBQ2Y7SUFDQUMsU0FBUztRQUFDO0tBQVc7QUFDdEIsR0FDQSxNQUNBO0FBR00sTUFBTVoscUJBQXFCSSxLQUFLQyxTQUFTLENBQy9DO0lBQ0NRLFNBQVM7SUFDVEMsZ0JBQWdCO1FBQ2Y7WUFDQ0MsTUFBTTtZQUNOQyxNQUFNO1lBQ05DLFNBQVM7WUFDVEMsbUJBQW1CO1lBQ25CQyxhQUFhO2dCQUFDO2FBQVE7WUFDdEJDLFNBQVM7WUFDVEMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzNCO1FBQ0E7WUFDQ04sTUFBTTtZQUNOQyxNQUFNO1lBQ05DLFNBQVM7WUFDVEMsbUJBQW1CO1lBQ25CQyxhQUFhO2dCQUFDO2FBQU07WUFDcEJDLFNBQVM7WUFDVEMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzNCO0tBQ0E7QUFDRixHQUNBLE1BQ0E7QUFHTSxTQUFTbkIsZ0JBQWdCYSxJQUFZO0lBQzNDLE9BQU9YLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQ1U7UUFDQUYsU0FBUztRQUNURyxNQUFNO1FBQ05NLFNBQVM7WUFDUkMsT0FBTztZQUNQLGVBQWU7WUFDZkMsS0FBSztRQUNOO1FBQ0FDLGlCQUFpQjtZQUNoQixzQkFBc0JDLHVCQUFjO1lBQ3BDQyxZQUFZO1FBQ2I7SUFDRCxHQUNBLE1BQ0E7QUFFRjtBQUVPLFNBQVMxQixlQUFlYyxJQUFZO0lBQzFDLE9BQU9YLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQ1UsTUFBTSxDQUFDLENBQUMsRUFBRUEsS0FBSyxJQUFJLENBQUM7UUFDcEJGLFNBQVM7UUFDVEcsTUFBTTtRQUNOWSxNQUFNO0lBQ1AsR0FDQSxNQUNBO0FBRUY7QUFFTyxTQUFTekIsbUJBQW1CWSxJQUFZO0lBQzlDLE9BQU9YLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQyxnQkFBZ0IsR0FBR1UsS0FBSyxrQ0FBa0MsQ0FBQztRQUMzRCx5QkFBeUI7SUFDMUIsR0FDQSxNQUNBO0FBRUY7QUFFTyxNQUFNakIsVUFBVSxDQUFDLHNDQUFzQyxDQUFDIn0=
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "devcontainerFeature", {
6
- enumerable: true,
7
- get: function() {
8
- return devcontainerFeature;
9
- }
10
- });
11
- const _promises = require("node:fs/promises");
12
- const _nodepath = require("node:path");
13
- const _composemodel = require("../../domain/compose.model.js");
14
- const _devcontainermodel = require("../../domain/devcontainer.model.js");
15
- async function render(ctx) {
16
- const model = ctx.models.get(_devcontainermodel.DEVCONTAINER_KEY);
17
- if (!model) return ctx;
18
- const dir = (0, _nodepath.join)(ctx.targetDir, ".devcontainer");
19
- await (0, _promises.mkdir)(dir, {
20
- recursive: true
21
- });
22
- await (0, _promises.writeFile)((0, _nodepath.join)(dir, "devcontainer.json"), model.render());
23
- const compose = ctx.models.get(_composemodel.COMPOSE_KEY);
24
- if (compose) {
25
- await (0, _promises.writeFile)((0, _nodepath.join)(dir, "docker-compose.yml"), compose.render());
26
- const dockerfile = model.dockerfile;
27
- if (dockerfile) {
28
- await (0, _promises.writeFile)((0, _nodepath.join)(dir, "Dockerfile"), dockerfile.render());
29
- }
30
- }
31
- return ctx;
32
- }
33
- const devcontainerFeature = {
34
- name: "devcontainer",
35
- render
36
- };
37
-
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9kZXZjb250YWluZXIvZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDT01QT1NFX0tFWSB9IGZyb20gXCIuLi8uLi9kb21haW4vY29tcG9zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgREVWQ09OVEFJTkVSX0tFWSB9IGZyb20gXCIuLi8uLi9kb21haW4vZGV2Y29udGFpbmVyLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUsIFNjYWZmb2xkQ29udGV4dCB9IGZyb20gXCIuLi8uLi9kb21haW4vaW5kZXguanNcIjtcblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyKGN0eDogU2NhZmZvbGRDb250ZXh0KTogUHJvbWlzZTxTY2FmZm9sZENvbnRleHQ+IHtcblx0Y29uc3QgbW9kZWwgPSBjdHgubW9kZWxzLmdldChERVZDT05UQUlORVJfS0VZKTtcblx0aWYgKCFtb2RlbCkgcmV0dXJuIGN0eDtcblxuXHRjb25zdCBkaXIgPSBqb2luKGN0eC50YXJnZXREaXIsIFwiLmRldmNvbnRhaW5lclwiKTtcblx0YXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0YXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlyLCBcImRldmNvbnRhaW5lci5qc29uXCIpLCBtb2RlbC5yZW5kZXIoKSk7XG5cblx0Y29uc3QgY29tcG9zZSA9IGN0eC5tb2RlbHMuZ2V0KENPTVBPU0VfS0VZKTtcblx0aWYgKGNvbXBvc2UpIHtcblx0XHRhd2FpdCB3cml0ZUZpbGUoam9pbihkaXIsIFwiZG9ja2VyLWNvbXBvc2UueW1sXCIpLCBjb21wb3NlLnJlbmRlcigpKTtcblx0XHRjb25zdCBkb2NrZXJmaWxlID0gbW9kZWwuZG9ja2VyZmlsZTtcblx0XHRpZiAoZG9ja2VyZmlsZSkge1xuXHRcdFx0YXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlyLCBcIkRvY2tlcmZpbGVcIiksIGRvY2tlcmZpbGUucmVuZGVyKCkpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjdHg7XG59XG5cbmV4cG9ydCBjb25zdCBkZXZjb250YWluZXJGZWF0dXJlOiBGZWF0dXJlID0ge1xuXHRuYW1lOiBcImRldmNvbnRhaW5lclwiLFxuXHRyZW5kZXIsXG59O1xuIl0sIm5hbWVzIjpbImRldmNvbnRhaW5lckZlYXR1cmUiLCJyZW5kZXIiLCJjdHgiLCJtb2RlbCIsIm1vZGVscyIsImdldCIsIkRFVkNPTlRBSU5FUl9LRVkiLCJkaXIiLCJqb2luIiwidGFyZ2V0RGlyIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJ3cml0ZUZpbGUiLCJjb21wb3NlIiwiQ09NUE9TRV9LRVkiLCJkb2NrZXJmaWxlIiwibmFtZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkEwQmFBOzs7ZUFBQUE7OzswQkExQm9COzBCQUNaOzhCQUNPO21DQUNLO0FBR2pDLGVBQWVDLE9BQU9DLEdBQW9CO0lBQ3pDLE1BQU1DLFFBQVFELElBQUlFLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDQyxtQ0FBZ0I7SUFDN0MsSUFBSSxDQUFDSCxPQUFPLE9BQU9EO0lBRW5CLE1BQU1LLE1BQU1DLElBQUFBLGNBQUksRUFBQ04sSUFBSU8sU0FBUyxFQUFFO0lBQ2hDLE1BQU1DLElBQUFBLGVBQUssRUFBQ0gsS0FBSztRQUFFSSxXQUFXO0lBQUs7SUFDbkMsTUFBTUMsSUFBQUEsbUJBQVMsRUFBQ0osSUFBQUEsY0FBSSxFQUFDRCxLQUFLLHNCQUFzQkosTUFBTUYsTUFBTTtJQUU1RCxNQUFNWSxVQUFVWCxJQUFJRSxNQUFNLENBQUNDLEdBQUcsQ0FBQ1MseUJBQVc7SUFDMUMsSUFBSUQsU0FBUztRQUNaLE1BQU1ELElBQUFBLG1CQUFTLEVBQUNKLElBQUFBLGNBQUksRUFBQ0QsS0FBSyx1QkFBdUJNLFFBQVFaLE1BQU07UUFDL0QsTUFBTWMsYUFBYVosTUFBTVksVUFBVTtRQUNuQyxJQUFJQSxZQUFZO1lBQ2YsTUFBTUgsSUFBQUEsbUJBQVMsRUFBQ0osSUFBQUEsY0FBSSxFQUFDRCxLQUFLLGVBQWVRLFdBQVdkLE1BQU07UUFDM0Q7SUFDRDtJQUVBLE9BQU9DO0FBQ1I7QUFFTyxNQUFNRixzQkFBK0I7SUFDM0NnQixNQUFNO0lBQ05mO0FBQ0QifQ==
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "finalizeFeature", {
6
- enumerable: true,
7
- get: function() {
8
- return finalizeFeature;
9
- }
10
- });
11
- const _nodepath = require("node:path");
12
- const _interop = require("@decohere/nexus/interop");
13
- const _index = require("../../domain/index.js");
14
- async function finalize(ctx) {
15
- let pm = (0, _interop.detectPackageManager)(ctx.targetDir);
16
- if (pm == null) {
17
- pm = await (0, _interop.promptForPackageManager)();
18
- }
19
- let shouldInstall;
20
- if (ctx.opts.yes) {
21
- shouldInstall = true;
22
- } else {
23
- const answer = await (0, _index.ask)("\nInstall dependencies now? [yes/no] (yes): ", "yes");
24
- shouldInstall = answer.toLowerCase() !== "no";
25
- }
26
- if (shouldInstall) {
27
- console.log(`\nScaffolded ${ctx.projectName}. Installing dependencies...\n`);
28
- await pm.install({
29
- cwd: ctx.targetDir
30
- });
31
- }
32
- console.log(`\nDone! ${shouldInstall ? "Next" : "To get started:"} steps:\n`);
33
- if ((0, _nodepath.basename)(ctx.targetDir) !== ctx.targetDir) {
34
- console.log(` cd ${ctx.projectName}`);
35
- }
36
- if (!shouldInstall) {
37
- console.log(` ${pm.name} install`);
38
- }
39
- console.log(" pnpm build # forge build");
40
- console.log(" pnpm dev # flux serve\n");
41
- return ctx;
42
- }
43
- const finalizeFeature = {
44
- name: "finalize",
45
- finalize
46
- };
47
-
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9maW5hbGl6ZS9mZWF0dXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHByb21wdEZvclBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBhc2ssIHR5cGUgRmVhdHVyZSwgdHlwZSBTY2FmZm9sZENvbnRleHQgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2luZGV4LmpzXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmFsaXplKGN0eDogU2NhZmZvbGRDb250ZXh0KTogUHJvbWlzZTxTY2FmZm9sZENvbnRleHQ+IHtcblx0bGV0IHBtID0gZGV0ZWN0UGFja2FnZU1hbmFnZXIoY3R4LnRhcmdldERpcik7XG5cdGlmIChwbSA9PSBudWxsKSB7XG5cdFx0cG0gPSBhd2FpdCBwcm9tcHRGb3JQYWNrYWdlTWFuYWdlcigpO1xuXHR9XG5cblx0bGV0IHNob3VsZEluc3RhbGw6IGJvb2xlYW47XG5cdGlmIChjdHgub3B0cy55ZXMpIHtcblx0XHRzaG91bGRJbnN0YWxsID0gdHJ1ZTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBhbnN3ZXIgPSBhd2FpdCBhc2soXCJcXG5JbnN0YWxsIGRlcGVuZGVuY2llcyBub3c/IFt5ZXMvbm9dICh5ZXMpOiBcIiwgXCJ5ZXNcIik7XG5cdFx0c2hvdWxkSW5zdGFsbCA9IGFuc3dlci50b0xvd2VyQ2FzZSgpICE9PSBcIm5vXCI7XG5cdH1cblxuXHRpZiAoc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnNvbGUubG9nKGBcXG5TY2FmZm9sZGVkICR7Y3R4LnByb2plY3ROYW1lfS4gSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cXG5gKTtcblx0XHRhd2FpdCBwbS5pbnN0YWxsKHsgY3dkOiBjdHgudGFyZ2V0RGlyIH0pO1xuXHR9XG5cblx0Y29uc29sZS5sb2coYFxcbkRvbmUhICR7c2hvdWxkSW5zdGFsbCA/IFwiTmV4dFwiIDogXCJUbyBnZXQgc3RhcnRlZDpcIn0gc3RlcHM6XFxuYCk7XG5cdGlmIChiYXNlbmFtZShjdHgudGFyZ2V0RGlyKSAhPT0gY3R4LnRhcmdldERpcikge1xuXHRcdGNvbnNvbGUubG9nKGAgIGNkICR7Y3R4LnByb2plY3ROYW1lfWApO1xuXHR9XG5cdGlmICghc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnNvbGUubG9nKGAgICR7cG0ubmFtZX0gaW5zdGFsbGApO1xuXHR9XG5cdGNvbnNvbGUubG9nKFwiICBwbnBtIGJ1aWxkICAgICAjIGZvcmdlIGJ1aWxkXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgcG5wbSBkZXYgICAgICAgIyBmbHV4IHNlcnZlXFxuXCIpO1xuXHRyZXR1cm4gY3R4O1xufVxuXG5leHBvcnQgY29uc3QgZmluYWxpemVGZWF0dXJlOiBGZWF0dXJlID0ge1xuXHRuYW1lOiBcImZpbmFsaXplXCIsXG5cdGZpbmFsaXplLFxufTtcbiJdLCJuYW1lcyI6WyJmaW5hbGl6ZUZlYXR1cmUiLCJmaW5hbGl6ZSIsImN0eCIsInBtIiwiZGV0ZWN0UGFja2FnZU1hbmFnZXIiLCJ0YXJnZXREaXIiLCJwcm9tcHRGb3JQYWNrYWdlTWFuYWdlciIsInNob3VsZEluc3RhbGwiLCJvcHRzIiwieWVzIiwiYW5zd2VyIiwiYXNrIiwidG9Mb3dlckNhc2UiLCJjb25zb2xlIiwibG9nIiwicHJvamVjdE5hbWUiLCJpbnN0YWxsIiwiY3dkIiwiYmFzZW5hbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1DYUE7OztlQUFBQTs7OzBCQW5DWTt5QkFDcUM7dUJBQ047QUFFeEQsZUFBZUMsU0FBU0MsR0FBb0I7SUFDM0MsSUFBSUMsS0FBS0MsSUFBQUEsNkJBQW9CLEVBQUNGLElBQUlHLFNBQVM7SUFDM0MsSUFBSUYsTUFBTSxNQUFNO1FBQ2ZBLEtBQUssTUFBTUcsSUFBQUEsZ0NBQXVCO0lBQ25DO0lBRUEsSUFBSUM7SUFDSixJQUFJTCxJQUFJTSxJQUFJLENBQUNDLEdBQUcsRUFBRTtRQUNqQkYsZ0JBQWdCO0lBQ2pCLE9BQU87UUFDTixNQUFNRyxTQUFTLE1BQU1DLElBQUFBLFVBQUcsRUFBQyxnREFBZ0Q7UUFDekVKLGdCQUFnQkcsT0FBT0UsV0FBVyxPQUFPO0lBQzFDO0lBRUEsSUFBSUwsZUFBZTtRQUNsQk0sUUFBUUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFWixJQUFJYSxXQUFXLENBQUMsOEJBQThCLENBQUM7UUFDM0UsTUFBTVosR0FBR2EsT0FBTyxDQUFDO1lBQUVDLEtBQUtmLElBQUlHLFNBQVM7UUFBQztJQUN2QztJQUVBUSxRQUFRQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUVQLGdCQUFnQixTQUFTLGtCQUFrQixTQUFTLENBQUM7SUFDNUUsSUFBSVcsSUFBQUEsa0JBQVEsRUFBQ2hCLElBQUlHLFNBQVMsTUFBTUgsSUFBSUcsU0FBUyxFQUFFO1FBQzlDUSxRQUFRQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUVaLElBQUlhLFdBQVcsRUFBRTtJQUN0QztJQUNBLElBQUksQ0FBQ1IsZUFBZTtRQUNuQk0sUUFBUUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFWCxHQUFHZ0IsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNuQztJQUNBTixRQUFRQyxHQUFHLENBQUM7SUFDWkQsUUFBUUMsR0FBRyxDQUFDO0lBQ1osT0FBT1o7QUFDUjtBQUVPLE1BQU1GLGtCQUEyQjtJQUN2Q21CLE1BQU07SUFDTmxCO0FBQ0QifQ==
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "postgresqlFeature", {
6
- enumerable: true,
7
- get: function() {
8
- return postgresqlFeature;
9
- }
10
- });
11
- const _nodecrypto = require("node:crypto");
12
- const _promises = require("node:fs/promises");
13
- const _nodepath = require("node:path");
14
- const _composemodel = require("../../domain/compose.model.js");
15
- const _devcontainermodel = require("../../domain/devcontainer.model.js");
16
- const _models = require("./models.js");
17
- const enabled = (ctx)=>ctx.opts.database === "typeorm";
18
- async function configure(ctx) {
19
- const devcontainer = ctx.models.get(_devcontainermodel.DEVCONTAINER_KEY);
20
- const nodeModulesVolume = `${ctx.projectName}-node-modules`;
21
- const db = `${ctx.projectName}_dev`;
22
- const user = "postgres";
23
- const password = (0, _nodecrypto.randomBytes)(16).toString("hex");
24
- const compose = new _composemodel.ComposeModel().addService("devcontainer", {
25
- build: ".",
26
- volumes: [
27
- `\${HOME}/.npm/${ctx.projectName}:/home/node/.npm`,
28
- `${nodeModulesVolume}:/workspace/node_modules`
29
- ],
30
- environment: {
31
- NPM_CONFIG_USERCONFIG: "/home/node/.npm/.npmrc"
32
- },
33
- command: "sleep infinity"
34
- }).addService("postgres", {
35
- image: "postgres:16",
36
- restart: "unless-stopped",
37
- environment: {
38
- // biome-ignore lint/suspicious/noTemplateCurlyInString: Docker Compose reads these from .env
39
- POSTGRES_DB: "${POSTGRES_DB}",
40
- // biome-ignore lint/suspicious/noTemplateCurlyInString: Docker Compose reads these from .env
41
- POSTGRES_USER: "${POSTGRES_USER}",
42
- // biome-ignore lint/suspicious/noTemplateCurlyInString: Docker Compose reads these from .env
43
- POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
44
- },
45
- ports: [
46
- "5432:5432"
47
- ],
48
- volumes: [
49
- "postgres-data:/var/lib/postgresql/data"
50
- ]
51
- }).addVolume(nodeModulesVolume).addVolume("postgres-data");
52
- devcontainer?.useCompose();
53
- const creds = {
54
- db,
55
- user,
56
- password
57
- };
58
- return {
59
- ...ctx,
60
- models: ctx.models.set(_composemodel.COMPOSE_KEY, compose).set(_models.POSTGRES_CREDS_KEY, creds)
61
- };
62
- }
63
- async function render(ctx) {
64
- const creds = ctx.models.get(_models.POSTGRES_CREDS_KEY);
65
- if (!creds) return ctx;
66
- const devcontainerDir = (0, _nodepath.join)(ctx.targetDir, ".devcontainer");
67
- await (0, _promises.mkdir)(devcontainerDir, {
68
- recursive: true
69
- });
70
- const envContent = `POSTGRES_DB=${creds.db}\nPOSTGRES_USER=${creds.user}\nPOSTGRES_PASSWORD=${creds.password}\n`;
71
- await (0, _promises.writeFile)((0, _nodepath.join)(devcontainerDir, ".env"), envContent);
72
- return ctx;
73
- }
74
- const postgresqlFeature = {
75
- name: "postgresql",
76
- enabled,
77
- configure,
78
- render
79
- };
80
-
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0Z3Jlc3FsL2ZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IG1rZGlyLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IENPTVBPU0VfS0VZLCBDb21wb3NlTW9kZWwgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2NvbXBvc2UubW9kZWwuanNcIjtcbmltcG9ydCB7IERFVkNPTlRBSU5FUl9LRVkgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2RldmNvbnRhaW5lci5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlLCBTY2FmZm9sZENvbnRleHQgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBQT1NUR1JFU19DUkVEU19LRVkgfSBmcm9tIFwiLi9tb2RlbHMuanNcIjtcblxuY29uc3QgZW5hYmxlZCA9IChjdHg6IFNjYWZmb2xkQ29udGV4dCkgPT4gY3R4Lm9wdHMuZGF0YWJhc2UgPT09IFwidHlwZW9ybVwiO1xuXG5hc3luYyBmdW5jdGlvbiBjb25maWd1cmUoY3R4OiBTY2FmZm9sZENvbnRleHQpOiBQcm9taXNlPFNjYWZmb2xkQ29udGV4dD4ge1xuXHRjb25zdCBkZXZjb250YWluZXIgPSBjdHgubW9kZWxzLmdldChERVZDT05UQUlORVJfS0VZKTtcblx0Y29uc3Qgbm9kZU1vZHVsZXNWb2x1bWUgPSBgJHtjdHgucHJvamVjdE5hbWV9LW5vZGUtbW9kdWxlc2A7XG5cblx0Y29uc3QgZGIgPSBgJHtjdHgucHJvamVjdE5hbWV9X2RldmA7XG5cdGNvbnN0IHVzZXIgPSBcInBvc3RncmVzXCI7XG5cdGNvbnN0IHBhc3N3b3JkID0gcmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKFwiaGV4XCIpO1xuXG5cdGNvbnN0IGNvbXBvc2UgPSBuZXcgQ29tcG9zZU1vZGVsKClcblx0XHQuYWRkU2VydmljZShcImRldmNvbnRhaW5lclwiLCB7XG5cdFx0XHRidWlsZDogXCIuXCIsXG5cdFx0XHR2b2x1bWVzOiBbXG5cdFx0XHRcdGBcXCR7SE9NRX0vLm5wbS8ke2N0eC5wcm9qZWN0TmFtZX06L2hvbWUvbm9kZS8ubnBtYCxcblx0XHRcdFx0YCR7bm9kZU1vZHVsZXNWb2x1bWV9Oi93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzYCxcblx0XHRcdF0sXG5cdFx0XHRlbnZpcm9ubWVudDoge1xuXHRcdFx0XHROUE1fQ09ORklHX1VTRVJDT05GSUc6IFwiL2hvbWUvbm9kZS8ubnBtLy5ucG1yY1wiLFxuXHRcdFx0fSxcblx0XHRcdGNvbW1hbmQ6IFwic2xlZXAgaW5maW5pdHlcIixcblx0XHR9KVxuXHRcdC5hZGRTZXJ2aWNlKFwicG9zdGdyZXNcIiwge1xuXHRcdFx0aW1hZ2U6IFwicG9zdGdyZXM6MTZcIixcblx0XHRcdHJlc3RhcnQ6IFwidW5sZXNzLXN0b3BwZWRcIixcblx0XHRcdGVudmlyb25tZW50OiB7XG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IERvY2tlciBDb21wb3NlIHJlYWRzIHRoZXNlIGZyb20gLmVudlxuXHRcdFx0XHRQT1NUR1JFU19EQjogXCIke1BPU1RHUkVTX0RCfVwiLFxuXHRcdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vVGVtcGxhdGVDdXJseUluU3RyaW5nOiBEb2NrZXIgQ29tcG9zZSByZWFkcyB0aGVzZSBmcm9tIC5lbnZcblx0XHRcdFx0UE9TVEdSRVNfVVNFUjogXCIke1BPU1RHUkVTX1VTRVJ9XCIsXG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IERvY2tlciBDb21wb3NlIHJlYWRzIHRoZXNlIGZyb20gLmVudlxuXHRcdFx0XHRQT1NUR1JFU19QQVNTV09SRDogXCIke1BPU1RHUkVTX1BBU1NXT1JEfVwiLFxuXHRcdFx0fSxcblx0XHRcdHBvcnRzOiBbXCI1NDMyOjU0MzJcIl0sXG5cdFx0XHR2b2x1bWVzOiBbXCJwb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVwiXSxcblx0XHR9KVxuXHRcdC5hZGRWb2x1bWUobm9kZU1vZHVsZXNWb2x1bWUpXG5cdFx0LmFkZFZvbHVtZShcInBvc3RncmVzLWRhdGFcIik7XG5cblx0ZGV2Y29udGFpbmVyPy51c2VDb21wb3NlKCk7XG5cblx0Y29uc3QgY3JlZHMgPSB7IGRiLCB1c2VyLCBwYXNzd29yZCB9O1xuXHRyZXR1cm4ge1xuXHRcdC4uLmN0eCxcblx0XHRtb2RlbHM6IGN0eC5tb2RlbHMuc2V0KENPTVBPU0VfS0VZLCBjb21wb3NlKS5zZXQoUE9TVEdSRVNfQ1JFRFNfS0VZLCBjcmVkcyksXG5cdH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlcihjdHg6IFNjYWZmb2xkQ29udGV4dCk6IFByb21pc2U8U2NhZmZvbGRDb250ZXh0PiB7XG5cdGNvbnN0IGNyZWRzID0gY3R4Lm1vZGVscy5nZXQoUE9TVEdSRVNfQ1JFRFNfS0VZKTtcblx0aWYgKCFjcmVkcykgcmV0dXJuIGN0eDtcblxuXHRjb25zdCBkZXZjb250YWluZXJEaXIgPSBqb2luKGN0eC50YXJnZXREaXIsIFwiLmRldmNvbnRhaW5lclwiKTtcblx0YXdhaXQgbWtkaXIoZGV2Y29udGFpbmVyRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0Y29uc3QgZW52Q29udGVudCA9IGBQT1NUR1JFU19EQj0ke2NyZWRzLmRifVxcblBPU1RHUkVTX1VTRVI9JHtjcmVkcy51c2VyfVxcblBPU1RHUkVTX1BBU1NXT1JEPSR7Y3JlZHMucGFzc3dvcmR9XFxuYDtcblx0YXdhaXQgd3JpdGVGaWxlKGpvaW4oZGV2Y29udGFpbmVyRGlyLCBcIi5lbnZcIiksIGVudkNvbnRlbnQpO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmV4cG9ydCBjb25zdCBwb3N0Z3Jlc3FsRmVhdHVyZTogRmVhdHVyZSA9IHtcblx0bmFtZTogXCJwb3N0Z3Jlc3FsXCIsXG5cdGVuYWJsZWQsXG5cdGNvbmZpZ3VyZSxcblx0cmVuZGVyLFxufTtcbiJdLCJuYW1lcyI6WyJwb3N0Z3Jlc3FsRmVhdHVyZSIsImVuYWJsZWQiLCJjdHgiLCJvcHRzIiwiZGF0YWJhc2UiLCJjb25maWd1cmUiLCJkZXZjb250YWluZXIiLCJtb2RlbHMiLCJnZXQiLCJERVZDT05UQUlORVJfS0VZIiwibm9kZU1vZHVsZXNWb2x1bWUiLCJwcm9qZWN0TmFtZSIsImRiIiwidXNlciIsInBhc3N3b3JkIiwicmFuZG9tQnl0ZXMiLCJ0b1N0cmluZyIsImNvbXBvc2UiLCJDb21wb3NlTW9kZWwiLCJhZGRTZXJ2aWNlIiwiYnVpbGQiLCJ2b2x1bWVzIiwiZW52aXJvbm1lbnQiLCJOUE1fQ09ORklHX1VTRVJDT05GSUciLCJjb21tYW5kIiwiaW1hZ2UiLCJyZXN0YXJ0IiwiUE9TVEdSRVNfREIiLCJQT1NUR1JFU19VU0VSIiwiUE9TVEdSRVNfUEFTU1dPUkQiLCJwb3J0cyIsImFkZFZvbHVtZSIsInVzZUNvbXBvc2UiLCJjcmVkcyIsInNldCIsIkNPTVBPU0VfS0VZIiwiUE9TVEdSRVNfQ1JFRFNfS0VZIiwicmVuZGVyIiwiZGV2Y29udGFpbmVyRGlyIiwiam9pbiIsInRhcmdldERpciIsIm1rZGlyIiwicmVjdXJzaXZlIiwiZW52Q29udGVudCIsIndyaXRlRmlsZSIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBb0VhQTs7O2VBQUFBOzs7NEJBcEVlOzBCQUNLOzBCQUNaOzhCQUNxQjttQ0FDVDt3QkFFRTtBQUVuQyxNQUFNQyxVQUFVLENBQUNDLE1BQXlCQSxJQUFJQyxJQUFJLENBQUNDLFFBQVEsS0FBSztBQUVoRSxlQUFlQyxVQUFVSCxHQUFvQjtJQUM1QyxNQUFNSSxlQUFlSixJQUFJSyxNQUFNLENBQUNDLEdBQUcsQ0FBQ0MsbUNBQWdCO0lBQ3BELE1BQU1DLG9CQUFvQixHQUFHUixJQUFJUyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBRTNELE1BQU1DLEtBQUssR0FBR1YsSUFBSVMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNuQyxNQUFNRSxPQUFPO0lBQ2IsTUFBTUMsV0FBV0MsSUFBQUEsdUJBQVcsRUFBQyxJQUFJQyxRQUFRLENBQUM7SUFFMUMsTUFBTUMsVUFBVSxJQUFJQywwQkFBWSxHQUM5QkMsVUFBVSxDQUFDLGdCQUFnQjtRQUMzQkMsT0FBTztRQUNQQyxTQUFTO1lBQ1IsQ0FBQyxjQUFjLEVBQUVuQixJQUFJUyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7WUFDbEQsR0FBR0Qsa0JBQWtCLHdCQUF3QixDQUFDO1NBQzlDO1FBQ0RZLGFBQWE7WUFDWkMsdUJBQXVCO1FBQ3hCO1FBQ0FDLFNBQVM7SUFDVixHQUNDTCxVQUFVLENBQUMsWUFBWTtRQUN2Qk0sT0FBTztRQUNQQyxTQUFTO1FBQ1RKLGFBQWE7WUFDWiw2RkFBNkY7WUFDN0ZLLGFBQWE7WUFDYiw2RkFBNkY7WUFDN0ZDLGVBQWU7WUFDZiw2RkFBNkY7WUFDN0ZDLG1CQUFtQjtRQUNwQjtRQUNBQyxPQUFPO1lBQUM7U0FBWTtRQUNwQlQsU0FBUztZQUFDO1NBQXlDO0lBQ3BELEdBQ0NVLFNBQVMsQ0FBQ3JCLG1CQUNWcUIsU0FBUyxDQUFDO0lBRVp6QixjQUFjMEI7SUFFZCxNQUFNQyxRQUFRO1FBQUVyQjtRQUFJQztRQUFNQztJQUFTO0lBQ25DLE9BQU87UUFDTixHQUFHWixHQUFHO1FBQ05LLFFBQVFMLElBQUlLLE1BQU0sQ0FBQzJCLEdBQUcsQ0FBQ0MseUJBQVcsRUFBRWxCLFNBQVNpQixHQUFHLENBQUNFLDBCQUFrQixFQUFFSDtJQUN0RTtBQUNEO0FBRUEsZUFBZUksT0FBT25DLEdBQW9CO0lBQ3pDLE1BQU0rQixRQUFRL0IsSUFBSUssTUFBTSxDQUFDQyxHQUFHLENBQUM0QiwwQkFBa0I7SUFDL0MsSUFBSSxDQUFDSCxPQUFPLE9BQU8vQjtJQUVuQixNQUFNb0Msa0JBQWtCQyxJQUFBQSxjQUFJLEVBQUNyQyxJQUFJc0MsU0FBUyxFQUFFO0lBQzVDLE1BQU1DLElBQUFBLGVBQUssRUFBQ0gsaUJBQWlCO1FBQUVJLFdBQVc7SUFBSztJQUMvQyxNQUFNQyxhQUFhLENBQUMsWUFBWSxFQUFFVixNQUFNckIsRUFBRSxDQUFDLGdCQUFnQixFQUFFcUIsTUFBTXBCLElBQUksQ0FBQyxvQkFBb0IsRUFBRW9CLE1BQU1uQixRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ2hILE1BQU04QixJQUFBQSxtQkFBUyxFQUFDTCxJQUFBQSxjQUFJLEVBQUNELGlCQUFpQixTQUFTSztJQUUvQyxPQUFPekM7QUFDUjtBQUVPLE1BQU1GLG9CQUE2QjtJQUN6QzZDLE1BQU07SUFDTjVDO0lBQ0FJO0lBQ0FnQztBQUNEIn0=
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "POSTGRES_CREDS_KEY", {
6
- enumerable: true,
7
- get: function() {
8
- return POSTGRES_CREDS_KEY;
9
- }
10
- });
11
- const _context = require("../../domain/context.js");
12
- const POSTGRES_CREDS_KEY = (0, _context.modelKey)("postgres-creds");
13
-
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0Z3Jlc3FsL21vZGVscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RlbEtleSB9IGZyb20gXCIuLi8uLi9kb21haW4vY29udGV4dC5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RncmVzQ3JlZHMge1xuXHRkYjogc3RyaW5nO1xuXHR1c2VyOiBzdHJpbmc7XG5cdHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQT1NUR1JFU19DUkVEU19LRVkgPSBtb2RlbEtleTxQb3N0Z3Jlc0NyZWRzPihcInBvc3RncmVzLWNyZWRzXCIpO1xuIl0sIm5hbWVzIjpbIlBPU1RHUkVTX0NSRURTX0tFWSIsIm1vZGVsS2V5Il0sIm1hcHBpbmdzIjoiOzs7OytCQVFhQTs7O2VBQUFBOzs7eUJBUlk7QUFRbEIsTUFBTUEscUJBQXFCQyxJQUFBQSxpQkFBUSxFQUFnQiJ9
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "buildPostmanCollection", {
6
- enumerable: true,
7
- get: function() {
8
- return buildPostmanCollection;
9
- }
10
- });
11
- function buildPostmanCollection(projectName, withAuth0) {
12
- const auth = withAuth0 ? {
13
- type: "oauth2",
14
- oauth2: [
15
- {
16
- key: "grant_type",
17
- value: "authorization_code_with_pkce",
18
- type: "string"
19
- },
20
- {
21
- key: "authUrl",
22
- value: "https://{{auth0Domain}}/authorize?audience={{auth0Audience}}",
23
- type: "string"
24
- },
25
- {
26
- key: "accessTokenUrl",
27
- value: "https://{{auth0Domain}}/oauth/token",
28
- type: "string"
29
- },
30
- {
31
- key: "clientId",
32
- value: "{{auth0ClientId}}",
33
- type: "string"
34
- },
35
- {
36
- key: "scope",
37
- value: "openid profile email",
38
- type: "string"
39
- },
40
- {
41
- key: "addTokenTo",
42
- value: "header",
43
- type: "string"
44
- },
45
- {
46
- key: "challengeAlgorithm",
47
- value: "S256",
48
- type: "string"
49
- }
50
- ]
51
- } : undefined;
52
- return {
53
- info: {
54
- name: `${projectName} WebAPI`,
55
- schema: "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
56
- },
57
- ...auth ? {
58
- auth
59
- } : {},
60
- item: [
61
- {
62
- name: "Hello",
63
- request: {
64
- method: "GET",
65
- url: {
66
- raw: "{{baseUrl}}/hello",
67
- host: [
68
- "{{baseUrl}}"
69
- ],
70
- path: [
71
- "hello"
72
- ]
73
- }
74
- }
75
- }
76
- ]
77
- };
78
- }
79
-
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0bWFuL2NvbGxlY3Rpb24udGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUG9zdG1hbkNvbGxlY3Rpb24ocHJvamVjdE5hbWU6IHN0cmluZywgd2l0aEF1dGgwOiBib29sZWFuKTogdW5rbm93biB7XG5cdGNvbnN0IGF1dGggPSB3aXRoQXV0aDBcblx0XHQ/IHtcblx0XHRcdFx0dHlwZTogXCJvYXV0aDJcIixcblx0XHRcdFx0b2F1dGgyOiBbXG5cdFx0XHRcdFx0eyBrZXk6IFwiZ3JhbnRfdHlwZVwiLCB2YWx1ZTogXCJhdXRob3JpemF0aW9uX2NvZGVfd2l0aF9wa2NlXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYXV0aFVybFwiLFxuXHRcdFx0XHRcdFx0dmFsdWU6IFwiaHR0cHM6Ly97e2F1dGgwRG9tYWlufX0vYXV0aG9yaXplP2F1ZGllbmNlPXt7YXV0aDBBdWRpZW5jZX19XCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0a2V5OiBcImFjY2Vzc1Rva2VuVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9vYXV0aC90b2tlblwiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNsaWVudElkXCIsIHZhbHVlOiBcInt7YXV0aDBDbGllbnRJZH19XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogXCJvcGVuaWQgcHJvZmlsZSBlbWFpbFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiYWRkVG9rZW5Ub1wiLCB2YWx1ZTogXCJoZWFkZXJcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNoYWxsZW5nZUFsZ29yaXRobVwiLCB2YWx1ZTogXCJTMjU2XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XSxcblx0XHRcdH1cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRyZXR1cm4ge1xuXHRcdGluZm86IHtcblx0XHRcdG5hbWU6IGAke3Byb2plY3ROYW1lfSBXZWJBUElgLFxuXHRcdFx0c2NoZW1hOiBcImh0dHBzOi8vc2NoZW1hLmdldHBvc3RtYW4uY29tL2pzb24vY29sbGVjdGlvbi92Mi4xLjAvY29sbGVjdGlvbi5qc29uXCIsXG5cdFx0fSxcblx0XHQuLi4oYXV0aCA/IHsgYXV0aCB9IDoge30pLFxuXHRcdGl0ZW06IFtcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogXCJIZWxsb1wiLFxuXHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdHVybDogeyByYXc6IFwie3tiYXNlVXJsfX0vaGVsbG9cIiwgaG9zdDogW1wie3tiYXNlVXJsfX1cIl0sIHBhdGg6IFtcImhlbGxvXCJdIH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH07XG59XG4iXSwibmFtZXMiOlsiYnVpbGRQb3N0bWFuQ29sbGVjdGlvbiIsInByb2plY3ROYW1lIiwid2l0aEF1dGgwIiwiYXV0aCIsInR5cGUiLCJvYXV0aDIiLCJrZXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImluZm8iLCJuYW1lIiwic2NoZW1hIiwiaXRlbSIsInJlcXVlc3QiLCJtZXRob2QiLCJ1cmwiLCJyYXciLCJob3N0IiwicGF0aCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLHVCQUF1QkMsV0FBbUIsRUFBRUMsU0FBa0I7SUFDN0UsTUFBTUMsT0FBT0QsWUFDVjtRQUNBRSxNQUFNO1FBQ05DLFFBQVE7WUFDUDtnQkFBRUMsS0FBSztnQkFBY0MsT0FBTztnQkFBZ0NILE1BQU07WUFBUztZQUMzRTtnQkFDQ0UsS0FBSztnQkFDTEMsT0FBTztnQkFDUEgsTUFBTTtZQUNQO1lBQ0E7Z0JBQ0NFLEtBQUs7Z0JBQ0xDLE9BQU87Z0JBQ1BILE1BQU07WUFDUDtZQUNBO2dCQUFFRSxLQUFLO2dCQUFZQyxPQUFPO2dCQUFxQkgsTUFBTTtZQUFTO1lBQzlEO2dCQUFFRSxLQUFLO2dCQUFTQyxPQUFPO2dCQUF3QkgsTUFBTTtZQUFTO1lBQzlEO2dCQUFFRSxLQUFLO2dCQUFjQyxPQUFPO2dCQUFVSCxNQUFNO1lBQVM7WUFDckQ7Z0JBQUVFLEtBQUs7Z0JBQXNCQyxPQUFPO2dCQUFRSCxNQUFNO1lBQVM7U0FDM0Q7SUFDRixJQUNDSTtJQUVILE9BQU87UUFDTkMsTUFBTTtZQUNMQyxNQUFNLEdBQUdULFlBQVksT0FBTyxDQUFDO1lBQzdCVSxRQUFRO1FBQ1Q7UUFDQSxHQUFJUixPQUFPO1lBQUVBO1FBQUssSUFBSSxDQUFDLENBQUM7UUFDeEJTLE1BQU07WUFDTDtnQkFDQ0YsTUFBTTtnQkFDTkcsU0FBUztvQkFDUkMsUUFBUTtvQkFDUkMsS0FBSzt3QkFBRUMsS0FBSzt3QkFBcUJDLE1BQU07NEJBQUM7eUJBQWM7d0JBQUVDLE1BQU07NEJBQUM7eUJBQVE7b0JBQUM7Z0JBQ3pFO1lBQ0Q7U0FDQTtJQUNGO0FBQ0QifQ==
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "postmanEnvironmentYaml", {
6
- enumerable: true,
7
- get: function() {
8
- return postmanEnvironmentYaml;
9
- }
10
- });
11
- function postmanEnvironmentYaml(name, opts) {
12
- const auth0Section = opts?.auth0Domain ? `${[
13
- " - key: auth0Domain",
14
- ` value: ${opts.auth0Domain}`,
15
- " - key: auth0Audience",
16
- ` value: '${opts.auth0Audience ?? ""}'`,
17
- " - key: auth0ClientId",
18
- ` value: '${opts.auth0ClientId ?? ""}'`,
19
- " description: Client ID of the Auth0 SPA application used by Postman for PKCE authentication"
20
- ].join("\n")}\n` : "";
21
- return `name: ${name}\nvalues:\n - key: baseUrl\n value: 'http://localhost:3000'\n${auth0Section}`;
22
- }
23
-
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0bWFuL2Vudmlyb25tZW50LnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUG9zdG1hbkVudk9wdGlvbnMge1xuXHRhdXRoMERvbWFpbj86IHN0cmluZztcblx0YXV0aDBBdWRpZW5jZT86IHN0cmluZztcblx0YXV0aDBDbGllbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc3RtYW5FbnZpcm9ubWVudFlhbWwobmFtZTogc3RyaW5nLCBvcHRzPzogUG9zdG1hbkVudk9wdGlvbnMpOiBzdHJpbmcge1xuXHRjb25zdCBhdXRoMFNlY3Rpb24gPSBvcHRzPy5hdXRoMERvbWFpblxuXHRcdD8gYCR7W1xuXHRcdFx0XHRcIiAgLSBrZXk6IGF1dGgwRG9tYWluXCIsXG5cdFx0XHRcdGAgICAgdmFsdWU6ICR7b3B0cy5hdXRoMERvbWFpbn1gLFxuXHRcdFx0XHRcIiAgLSBrZXk6IGF1dGgwQXVkaWVuY2VcIixcblx0XHRcdFx0YCAgICB2YWx1ZTogJyR7b3B0cy5hdXRoMEF1ZGllbmNlID8/IFwiXCJ9J2AsXG5cdFx0XHRcdFwiICAtIGtleTogYXV0aDBDbGllbnRJZFwiLFxuXHRcdFx0XHRgICAgIHZhbHVlOiAnJHtvcHRzLmF1dGgwQ2xpZW50SWQgPz8gXCJcIn0nYCxcblx0XHRcdFx0XCIgICAgZGVzY3JpcHRpb246IENsaWVudCBJRCBvZiB0aGUgQXV0aDAgU1BBIGFwcGxpY2F0aW9uIHVzZWQgYnkgUG9zdG1hbiBmb3IgUEtDRSBhdXRoZW50aWNhdGlvblwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpfVxcbmBcblx0XHQ6IFwiXCI7XG5cdHJldHVybiBgbmFtZTogJHtuYW1lfVxcbnZhbHVlczpcXG4gIC0ga2V5OiBiYXNlVXJsXFxuICAgIHZhbHVlOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xcbiR7YXV0aDBTZWN0aW9ufWA7XG59XG4iXSwibmFtZXMiOlsicG9zdG1hbkVudmlyb25tZW50WWFtbCIsIm5hbWUiLCJvcHRzIiwiYXV0aDBTZWN0aW9uIiwiYXV0aDBEb21haW4iLCJhdXRoMEF1ZGllbmNlIiwiYXV0aDBDbGllbnRJZCIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7K0JBTWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSx1QkFBdUJDLElBQVksRUFBRUMsSUFBd0I7SUFDNUUsTUFBTUMsZUFBZUQsTUFBTUUsY0FDeEIsR0FBRztRQUNIO1FBQ0EsQ0FBQyxXQUFXLEVBQUVGLEtBQUtFLFdBQVcsRUFBRTtRQUNoQztRQUNBLENBQUMsWUFBWSxFQUFFRixLQUFLRyxhQUFhLElBQUksR0FBRyxDQUFDLENBQUM7UUFDMUM7UUFDQSxDQUFDLFlBQVksRUFBRUgsS0FBS0ksYUFBYSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzFDO0tBQ0EsQ0FBQ0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQ2Y7SUFDSCxPQUFPLENBQUMsTUFBTSxFQUFFTixLQUFLLGlFQUFpRSxFQUFFRSxjQUFjO0FBQ3ZHIn0=
@@ -1,192 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "postmanFeature", {
6
- enumerable: true,
7
- get: function() {
8
- return postmanFeature;
9
- }
10
- });
11
- const _promises = require("node:fs/promises");
12
- const _nodepath = require("node:path");
13
- const _index = require("../../domain/index.js");
14
- const _auth0cli = /*#__PURE__*/ _interop_require_wildcard(require("../auth0/auth0-cli.js"));
15
- const _models = require("../auth0/models.js");
16
- const _collectiontemplate = require("./collection.template.js");
17
- const _environmenttemplate = require("./environment.template.js");
18
- function _getRequireWildcardCache(nodeInterop) {
19
- if (typeof WeakMap !== "function") return null;
20
- var cacheBabelInterop = new WeakMap();
21
- var cacheNodeInterop = new WeakMap();
22
- return (_getRequireWildcardCache = function(nodeInterop) {
23
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
24
- })(nodeInterop);
25
- }
26
- function _interop_require_wildcard(obj, nodeInterop) {
27
- if (!nodeInterop && obj && obj.__esModule) {
28
- return obj;
29
- }
30
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
31
- return {
32
- default: obj
33
- };
34
- }
35
- var cache = _getRequireWildcardCache(nodeInterop);
36
- if (cache && cache.has(obj)) {
37
- return cache.get(obj);
38
- }
39
- var newObj = {
40
- __proto__: null
41
- };
42
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
43
- for(var key in obj){
44
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
45
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
46
- if (desc && (desc.get || desc.set)) {
47
- Object.defineProperty(newObj, key, desc);
48
- } else {
49
- newObj[key] = obj[key];
50
- }
51
- }
52
- }
53
- newObj.default = obj;
54
- if (cache) {
55
- cache.set(obj, newObj);
56
- }
57
- return newObj;
58
- }
59
- const enabled = (ctx)=>!!ctx.opts.postman && !ctx.opts.yes;
60
- /**
61
- * Integrate phase: drives the Postman REST API (and optionally the auth0 CLI
62
- * to create a SPA app for PKCE auth). Also writes a local environment yaml
63
- * for the VS Code Postman extension.
64
- */ async function integrate(ctx) {
65
- const { projectName, targetDir } = ctx;
66
- const auth0Config = ctx.models.get(_models.AUTH0_CONFIG_KEY);
67
- const apiKey = process.env.POSTMAN_API_KEY ?? await (0, _index.ask)("\n Postman API key (from app.getpostman.com/settings/me/api-keys): ");
68
- const headers = {
69
- "X-Api-Key": apiKey,
70
- "Content-Type": "application/json"
71
- };
72
- const wsRes = await fetch("https://api.getpostman.com/workspaces", {
73
- headers
74
- });
75
- if (!wsRes.ok) {
76
- console.error("\n Postman API key is invalid or request failed. Skipping Postman setup.");
77
- return ctx;
78
- }
79
- const { workspaces } = await wsRes.json();
80
- console.log("\n Postman workspaces:");
81
- for (const [i, w] of workspaces.entries()){
82
- console.log(` ${i + 1}. ${w.name} (${w.type})`);
83
- }
84
- console.log(" 0. Create new workspace");
85
- const wsInput = await (0, _index.ask)(" Select workspace [0]: ", "0");
86
- const wsIdx = Number.parseInt(wsInput, 10);
87
- let workspaceId;
88
- if (Number.isNaN(wsIdx) || wsIdx === 0 || wsIdx > workspaces.length) {
89
- const wsName = await (0, _index.ask)(` New workspace name [${projectName}]: `, projectName);
90
- const createRes = await fetch("https://api.getpostman.com/workspaces", {
91
- method: "POST",
92
- headers,
93
- body: JSON.stringify({
94
- workspace: {
95
- name: wsName,
96
- type: "personal"
97
- }
98
- })
99
- });
100
- const { workspace } = await createRes.json();
101
- workspaceId = workspace.id;
102
- console.log(` ✓ Workspace created: ${wsName}`);
103
- } else {
104
- workspaceId = workspaces[wsIdx - 1].id;
105
- console.log(` ✓ Workspace selected: ${workspaces[wsIdx - 1].name}`);
106
- }
107
- // Create SPA app in Auth0 for Postman PKCE flow
108
- let spaClientId;
109
- if (auth0Config) {
110
- console.log("\n Creating Auth0 SPA application for Postman...");
111
- try {
112
- spaClientId = _auth0cli.createSpaApp(`${projectName} Postman`, "https://oauth.pstmn.io/v1/callback").client_id;
113
- console.log(` ✓ SPA app created: ${spaClientId}`);
114
- } catch {
115
- console.error(` ✗ Failed to create SPA app. Re-login with required scopes:\n auth0 login --scopes ${_auth0cli.REQUIRED_SCOPES}`);
116
- }
117
- }
118
- // Create collection
119
- const colRes = await fetch(`https://api.getpostman.com/collections?workspace=${workspaceId}`, {
120
- method: "POST",
121
- headers,
122
- body: JSON.stringify({
123
- collection: (0, _collectiontemplate.buildPostmanCollection)(projectName, auth0Config != null)
124
- })
125
- });
126
- if (colRes.ok) {
127
- console.log(" ✓ Postman collection created");
128
- } else {
129
- console.error(" ✗ Failed to create Postman collection");
130
- }
131
- // Create environment
132
- const envVars = [
133
- {
134
- key: "baseUrl",
135
- value: "http://localhost:3000",
136
- type: "default",
137
- enabled: true
138
- }
139
- ];
140
- if (auth0Config) {
141
- envVars.push({
142
- key: "auth0Domain",
143
- value: auth0Config.issuerBaseUrl.replace("https://", ""),
144
- type: "default",
145
- enabled: true
146
- }, {
147
- key: "auth0Audience",
148
- value: auth0Config.audience,
149
- type: "default",
150
- enabled: true
151
- }, {
152
- key: "auth0ClientId",
153
- value: spaClientId ?? "",
154
- type: "default",
155
- enabled: true
156
- });
157
- }
158
- const envRes = await fetch(`https://api.getpostman.com/environments?workspace=${workspaceId}`, {
159
- method: "POST",
160
- headers,
161
- body: JSON.stringify({
162
- environment: {
163
- name: `${projectName} — Local`,
164
- values: envVars
165
- }
166
- })
167
- });
168
- if (envRes.ok) {
169
- console.log(" ✓ Postman environment created");
170
- } else {
171
- console.error(" ✗ Failed to create Postman environment");
172
- }
173
- // Write local environment YAML for VS Code Postman extension
174
- const envDir = (0, _nodepath.join)(targetDir, "postman", "environments");
175
- await (0, _promises.mkdir)(envDir, {
176
- recursive: true
177
- });
178
- await (0, _promises.writeFile)((0, _nodepath.join)(envDir, `${projectName} — Local.environment.yaml`), (0, _environmenttemplate.postmanEnvironmentYaml)(`${projectName} — Local`, auth0Config ? {
179
- auth0Domain: auth0Config.issuerBaseUrl.replace("https://", ""),
180
- auth0Audience: auth0Config.audience,
181
- auth0ClientId: spaClientId ?? ""
182
- } : undefined));
183
- console.log(" ✓ Local environment file written to postman/environments/");
184
- return ctx;
185
- }
186
- const postmanFeature = {
187
- name: "postman",
188
- enabled,
189
- integrate
190
- };
191
-
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9wb3N0bWFuL2ZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXIsIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgYXNrLCB0eXBlIEZlYXR1cmUsIHR5cGUgU2NhZmZvbGRDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9pbmRleC5qc1wiO1xuaW1wb3J0ICogYXMgYXV0aDAgZnJvbSBcIi4uL2F1dGgwL2F1dGgwLWNsaS5qc1wiO1xuaW1wb3J0IHsgQVVUSDBfQ09ORklHX0tFWSB9IGZyb20gXCIuLi9hdXRoMC9tb2RlbHMuanNcIjtcbmltcG9ydCB7IGJ1aWxkUG9zdG1hbkNvbGxlY3Rpb24gfSBmcm9tIFwiLi9jb2xsZWN0aW9uLnRlbXBsYXRlLmpzXCI7XG5pbXBvcnQgeyBwb3N0bWFuRW52aXJvbm1lbnRZYW1sIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQudGVtcGxhdGUuanNcIjtcblxuY29uc3QgZW5hYmxlZCA9IChjdHg6IFNjYWZmb2xkQ29udGV4dCkgPT4gISFjdHgub3B0cy5wb3N0bWFuICYmICFjdHgub3B0cy55ZXM7XG5cbi8qKlxuICogSW50ZWdyYXRlIHBoYXNlOiBkcml2ZXMgdGhlIFBvc3RtYW4gUkVTVCBBUEkgKGFuZCBvcHRpb25hbGx5IHRoZSBhdXRoMCBDTElcbiAqIHRvIGNyZWF0ZSBhIFNQQSBhcHAgZm9yIFBLQ0UgYXV0aCkuIEFsc28gd3JpdGVzIGEgbG9jYWwgZW52aXJvbm1lbnQgeWFtbFxuICogZm9yIHRoZSBWUyBDb2RlIFBvc3RtYW4gZXh0ZW5zaW9uLlxuICovXG5hc3luYyBmdW5jdGlvbiBpbnRlZ3JhdGUoY3R4OiBTY2FmZm9sZENvbnRleHQpOiBQcm9taXNlPFNjYWZmb2xkQ29udGV4dD4ge1xuXHRjb25zdCB7IHByb2plY3ROYW1lLCB0YXJnZXREaXIgfSA9IGN0eDtcblx0Y29uc3QgYXV0aDBDb25maWcgPSBjdHgubW9kZWxzLmdldChBVVRIMF9DT05GSUdfS0VZKTtcblxuXHRjb25zdCBhcGlLZXkgPVxuXHRcdHByb2Nlc3MuZW52LlBPU1RNQU5fQVBJX0tFWSA/P1xuXHRcdChhd2FpdCBhc2soXCJcXG4gIFBvc3RtYW4gQVBJIGtleSAoZnJvbSBhcHAuZ2V0cG9zdG1hbi5jb20vc2V0dGluZ3MvbWUvYXBpLWtleXMpOiBcIikpO1xuXG5cdGNvbnN0IGhlYWRlcnMgPSB7IFwiWC1BcGktS2V5XCI6IGFwaUtleSwgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfTtcblxuXHRjb25zdCB3c1JlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7IGhlYWRlcnMgfSk7XG5cdGlmICghd3NSZXMub2spIHtcblx0XHRjb25zb2xlLmVycm9yKFwiXFxuICBQb3N0bWFuIEFQSSBrZXkgaXMgaW52YWxpZCBvciByZXF1ZXN0IGZhaWxlZC4gU2tpcHBpbmcgUG9zdG1hbiBzZXR1cC5cIik7XG5cdFx0cmV0dXJuIGN0eDtcblx0fVxuXHRjb25zdCB7IHdvcmtzcGFjZXMgfSA9IChhd2FpdCB3c1Jlcy5qc29uKCkpIGFzIHtcblx0XHR3b3Jrc3BhY2VzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0+O1xuXHR9O1xuXG5cdGNvbnNvbGUubG9nKFwiXFxuICBQb3N0bWFuIHdvcmtzcGFjZXM6XCIpO1xuXHRmb3IgKGNvbnN0IFtpLCB3XSBvZiB3b3Jrc3BhY2VzLmVudHJpZXMoKSkge1xuXHRcdGNvbnNvbGUubG9nKGAgICAgJHtpICsgMX0uICR7dy5uYW1lfSAoJHt3LnR5cGV9KWApO1xuXHR9XG5cdGNvbnNvbGUubG9nKFwiICAgIDAuIENyZWF0ZSBuZXcgd29ya3NwYWNlXCIpO1xuXG5cdGNvbnN0IHdzSW5wdXQgPSBhd2FpdCBhc2soXCIgIFNlbGVjdCB3b3Jrc3BhY2UgWzBdOiBcIiwgXCIwXCIpO1xuXHRjb25zdCB3c0lkeCA9IE51bWJlci5wYXJzZUludCh3c0lucHV0LCAxMCk7XG5cblx0bGV0IHdvcmtzcGFjZUlkOiBzdHJpbmc7XG5cdGlmIChOdW1iZXIuaXNOYU4od3NJZHgpIHx8IHdzSWR4ID09PSAwIHx8IHdzSWR4ID4gd29ya3NwYWNlcy5sZW5ndGgpIHtcblx0XHRjb25zdCB3c05hbWUgPSBhd2FpdCBhc2soYCAgTmV3IHdvcmtzcGFjZSBuYW1lIFske3Byb2plY3ROYW1lfV06IGAsIHByb2plY3ROYW1lKTtcblx0XHRjb25zdCBjcmVhdGVSZXMgPSBhd2FpdCBmZXRjaChcImh0dHBzOi8vYXBpLmdldHBvc3RtYW4uY29tL3dvcmtzcGFjZXNcIiwge1xuXHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdGhlYWRlcnMsXG5cdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7IHdvcmtzcGFjZTogeyBuYW1lOiB3c05hbWUsIHR5cGU6IFwicGVyc29uYWxcIiB9IH0pLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHsgd29ya3NwYWNlIH0gPSAoYXdhaXQgY3JlYXRlUmVzLmpzb24oKSkgYXMgeyB3b3Jrc3BhY2U6IHsgaWQ6IHN0cmluZyB9IH07XG5cdFx0d29ya3NwYWNlSWQgPSB3b3Jrc3BhY2UuaWQ7XG5cdFx0Y29uc29sZS5sb2coYCAg4pyTIFdvcmtzcGFjZSBjcmVhdGVkOiAke3dzTmFtZX1gKTtcblx0fSBlbHNlIHtcblx0XHR3b3Jrc3BhY2VJZCA9IHdvcmtzcGFjZXNbd3NJZHggLSAxXS5pZDtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgV29ya3NwYWNlIHNlbGVjdGVkOiAke3dvcmtzcGFjZXNbd3NJZHggLSAxXS5uYW1lfWApO1xuXHR9XG5cblx0Ly8gQ3JlYXRlIFNQQSBhcHAgaW4gQXV0aDAgZm9yIFBvc3RtYW4gUEtDRSBmbG93XG5cdGxldCBzcGFDbGllbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRpZiAoYXV0aDBDb25maWcpIHtcblx0XHRjb25zb2xlLmxvZyhcIlxcbiAgQ3JlYXRpbmcgQXV0aDAgU1BBIGFwcGxpY2F0aW9uIGZvciBQb3N0bWFuLi4uXCIpO1xuXHRcdHRyeSB7XG5cdFx0XHRzcGFDbGllbnRJZCA9IGF1dGgwLmNyZWF0ZVNwYUFwcChcblx0XHRcdFx0YCR7cHJvamVjdE5hbWV9IFBvc3RtYW5gLFxuXHRcdFx0XHRcImh0dHBzOi8vb2F1dGgucHN0bW4uaW8vdjEvY2FsbGJhY2tcIixcblx0XHRcdCkuY2xpZW50X2lkO1xuXHRcdFx0Y29uc29sZS5sb2coYCAg4pyTIFNQQSBhcHAgY3JlYXRlZDogJHtzcGFDbGllbnRJZH1gKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdGAgIOKclyBGYWlsZWQgdG8gY3JlYXRlIFNQQSBhcHAuIFJlLWxvZ2luIHdpdGggcmVxdWlyZWQgc2NvcGVzOlxcbiAgICBhdXRoMCBsb2dpbiAtLXNjb3BlcyAke2F1dGgwLlJFUVVJUkVEX1NDT1BFU31gLFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvLyBDcmVhdGUgY29sbGVjdGlvblxuXHRjb25zdCBjb2xSZXMgPSBhd2FpdCBmZXRjaChcblx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vY29sbGVjdGlvbnM/d29ya3NwYWNlPSR7d29ya3NwYWNlSWR9YCxcblx0XHR7XG5cdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0aGVhZGVycyxcblx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0Y29sbGVjdGlvbjogYnVpbGRQb3N0bWFuQ29sbGVjdGlvbihwcm9qZWN0TmFtZSwgYXV0aDBDb25maWcgIT0gbnVsbCksXG5cdFx0XHR9KSxcblx0XHR9LFxuXHQpO1xuXHRpZiAoY29sUmVzLm9rKSB7XG5cdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGNvbGxlY3Rpb24gY3JlYXRlZFwiKTtcblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIGNyZWF0ZSBQb3N0bWFuIGNvbGxlY3Rpb25cIik7XG5cdH1cblxuXHQvLyBDcmVhdGUgZW52aXJvbm1lbnRcblx0Y29uc3QgZW52VmFyczogQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBlbmFibGVkOiBib29sZWFuIH0+ID0gW1xuXHRcdHsga2V5OiBcImJhc2VVcmxcIiwgdmFsdWU6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwXCIsIHR5cGU6IFwiZGVmYXVsdFwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdF07XG5cdGlmIChhdXRoMENvbmZpZykge1xuXHRcdGVudlZhcnMucHVzaChcblx0XHRcdHtcblx0XHRcdFx0a2V5OiBcImF1dGgwRG9tYWluXCIsXG5cdFx0XHRcdHZhbHVlOiBhdXRoMENvbmZpZy5pc3N1ZXJCYXNlVXJsLnJlcGxhY2UoXCJodHRwczovL1wiLCBcIlwiKSxcblx0XHRcdFx0dHlwZTogXCJkZWZhdWx0XCIsXG5cdFx0XHRcdGVuYWJsZWQ6IHRydWUsXG5cdFx0XHR9LFxuXHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aDBDb25maWcuYXVkaWVuY2UsIHR5cGU6IFwiZGVmYXVsdFwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJhdXRoMENsaWVudElkXCIsXG5cdFx0XHRcdHZhbHVlOiBzcGFDbGllbnRJZCA/PyBcIlwiLFxuXHRcdFx0XHR0eXBlOiBcImRlZmF1bHRcIixcblx0XHRcdFx0ZW5hYmxlZDogdHJ1ZSxcblx0XHRcdH0sXG5cdFx0KTtcblx0fVxuXHRjb25zdCBlbnZSZXMgPSBhd2FpdCBmZXRjaChcblx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vZW52aXJvbm1lbnRzP3dvcmtzcGFjZT0ke3dvcmtzcGFjZUlkfWAsXG5cdFx0e1xuXHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdGhlYWRlcnMsXG5cdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdGVudmlyb25tZW50OiB7IG5hbWU6IGAke3Byb2plY3ROYW1lfSDigJQgTG9jYWxgLCB2YWx1ZXM6IGVudlZhcnMgfSxcblx0XHRcdH0pLFxuXHRcdH0sXG5cdCk7XG5cdGlmIChlbnZSZXMub2spIHtcblx0XHRjb25zb2xlLmxvZyhcIiAg4pyTIFBvc3RtYW4gZW52aXJvbm1lbnQgY3JlYXRlZFwiKTtcblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIGNyZWF0ZSBQb3N0bWFuIGVudmlyb25tZW50XCIpO1xuXHR9XG5cblx0Ly8gV3JpdGUgbG9jYWwgZW52aXJvbm1lbnQgWUFNTCBmb3IgVlMgQ29kZSBQb3N0bWFuIGV4dGVuc2lvblxuXHRjb25zdCBlbnZEaXIgPSBqb2luKHRhcmdldERpciwgXCJwb3N0bWFuXCIsIFwiZW52aXJvbm1lbnRzXCIpO1xuXHRhd2FpdCBta2RpcihlbnZEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXHRhd2FpdCB3cml0ZUZpbGUoXG5cdFx0am9pbihlbnZEaXIsIGAke3Byb2plY3ROYW1lfSDigJQgTG9jYWwuZW52aXJvbm1lbnQueWFtbGApLFxuXHRcdHBvc3RtYW5FbnZpcm9ubWVudFlhbWwoXG5cdFx0XHRgJHtwcm9qZWN0TmFtZX0g4oCUIExvY2FsYCxcblx0XHRcdGF1dGgwQ29uZmlnXG5cdFx0XHRcdD8ge1xuXHRcdFx0XHRcdFx0YXV0aDBEb21haW46IGF1dGgwQ29uZmlnLmlzc3VlckJhc2VVcmwucmVwbGFjZShcImh0dHBzOi8vXCIsIFwiXCIpLFxuXHRcdFx0XHRcdFx0YXV0aDBBdWRpZW5jZTogYXV0aDBDb25maWcuYXVkaWVuY2UsXG5cdFx0XHRcdFx0XHRhdXRoMENsaWVudElkOiBzcGFDbGllbnRJZCA/PyBcIlwiLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0KSxcblx0KTtcblx0Y29uc29sZS5sb2coXCIgIOKckyBMb2NhbCBlbnZpcm9ubWVudCBmaWxlIHdyaXR0ZW4gdG8gcG9zdG1hbi9lbnZpcm9ubWVudHMvXCIpO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmV4cG9ydCBjb25zdCBwb3N0bWFuRmVhdHVyZTogRmVhdHVyZSA9IHtcblx0bmFtZTogXCJwb3N0bWFuXCIsXG5cdGVuYWJsZWQsXG5cdGludGVncmF0ZSxcbn07XG4iXSwibmFtZXMiOlsicG9zdG1hbkZlYXR1cmUiLCJlbmFibGVkIiwiY3R4Iiwib3B0cyIsInBvc3RtYW4iLCJ5ZXMiLCJpbnRlZ3JhdGUiLCJwcm9qZWN0TmFtZSIsInRhcmdldERpciIsImF1dGgwQ29uZmlnIiwibW9kZWxzIiwiZ2V0IiwiQVVUSDBfQ09ORklHX0tFWSIsImFwaUtleSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUTUFOX0FQSV9LRVkiLCJhc2siLCJoZWFkZXJzIiwid3NSZXMiLCJmZXRjaCIsIm9rIiwiY29uc29sZSIsImVycm9yIiwid29ya3NwYWNlcyIsImpzb24iLCJsb2ciLCJpIiwidyIsImVudHJpZXMiLCJuYW1lIiwidHlwZSIsIndzSW5wdXQiLCJ3c0lkeCIsIk51bWJlciIsInBhcnNlSW50Iiwid29ya3NwYWNlSWQiLCJpc05hTiIsImxlbmd0aCIsIndzTmFtZSIsImNyZWF0ZVJlcyIsIm1ldGhvZCIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwid29ya3NwYWNlIiwiaWQiLCJzcGFDbGllbnRJZCIsImF1dGgwIiwiY3JlYXRlU3BhQXBwIiwiY2xpZW50X2lkIiwiUkVRVUlSRURfU0NPUEVTIiwiY29sUmVzIiwiY29sbGVjdGlvbiIsImJ1aWxkUG9zdG1hbkNvbGxlY3Rpb24iLCJlbnZWYXJzIiwia2V5IiwidmFsdWUiLCJwdXNoIiwiaXNzdWVyQmFzZVVybCIsInJlcGxhY2UiLCJhdWRpZW5jZSIsImVudlJlcyIsImVudmlyb25tZW50IiwidmFsdWVzIiwiZW52RGlyIiwiam9pbiIsIm1rZGlyIiwicmVjdXJzaXZlIiwid3JpdGVGaWxlIiwicG9zdG1hbkVudmlyb25tZW50WWFtbCIsImF1dGgwRG9tYWluIiwiYXV0aDBBdWRpZW5jZSIsImF1dGgwQ2xpZW50SWQiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBdUphQTs7O2VBQUFBOzs7MEJBdkpvQjswQkFDWjt1QkFDbUM7a0VBQ2pDO3dCQUNVO29DQUNNO3FDQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkMsTUFBTUMsVUFBVSxDQUFDQyxNQUF5QixDQUFDLENBQUNBLElBQUlDLElBQUksQ0FBQ0MsT0FBTyxJQUFJLENBQUNGLElBQUlDLElBQUksQ0FBQ0UsR0FBRztBQUU3RTs7OztDQUlDLEdBQ0QsZUFBZUMsVUFBVUosR0FBb0I7SUFDNUMsTUFBTSxFQUFFSyxXQUFXLEVBQUVDLFNBQVMsRUFBRSxHQUFHTjtJQUNuQyxNQUFNTyxjQUFjUCxJQUFJUSxNQUFNLENBQUNDLEdBQUcsQ0FBQ0Msd0JBQWdCO0lBRW5ELE1BQU1DLFNBQ0xDLFFBQVFDLEdBQUcsQ0FBQ0MsZUFBZSxJQUMxQixNQUFNQyxJQUFBQSxVQUFHLEVBQUM7SUFFWixNQUFNQyxVQUFVO1FBQUUsYUFBYUw7UUFBUSxnQkFBZ0I7SUFBbUI7SUFFMUUsTUFBTU0sUUFBUSxNQUFNQyxNQUFNLHlDQUF5QztRQUFFRjtJQUFRO0lBQzdFLElBQUksQ0FBQ0MsTUFBTUUsRUFBRSxFQUFFO1FBQ2RDLFFBQVFDLEtBQUssQ0FBQztRQUNkLE9BQU9yQjtJQUNSO0lBQ0EsTUFBTSxFQUFFc0IsVUFBVSxFQUFFLEdBQUksTUFBTUwsTUFBTU0sSUFBSTtJQUl4Q0gsUUFBUUksR0FBRyxDQUFDO0lBQ1osS0FBSyxNQUFNLENBQUNDLEdBQUdDLEVBQUUsSUFBSUosV0FBV0ssT0FBTyxHQUFJO1FBQzFDUCxRQUFRSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUVDLElBQUksRUFBRSxFQUFFLEVBQUVD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