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

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 (186) hide show
  1. package/commonjs/src/cli.js +26 -5
  2. package/commonjs/src/models/compose.model.js +82 -0
  3. package/commonjs/src/models/config-yaml.model.js +34 -0
  4. package/commonjs/src/models/const.js +29 -0
  5. package/commonjs/src/models/container-image.model.js +88 -0
  6. package/commonjs/src/models/dev-container.model.js +73 -0
  7. package/commonjs/src/models/env-file.model.js +33 -0
  8. package/commonjs/src/models/gitignore.model.js +32 -0
  9. package/commonjs/src/models/launch-json.model.js +52 -0
  10. package/commonjs/src/models/package-json.model.js +64 -0
  11. package/commonjs/src/models/project.model.js +126 -0
  12. package/commonjs/src/models/source-file.js +6 -0
  13. package/commonjs/src/models/tsconfig.model.js +34 -0
  14. package/commonjs/src/models/vscode-settings.model.js +31 -0
  15. package/commonjs/src/services/scaffold.service.js +62 -0
  16. package/commonjs/src/webapi/create-api.js +169 -0
  17. package/commonjs/src/webapi/features/auth.feature.js +166 -0
  18. package/commonjs/src/webapi/features/auth0-cli.js +151 -0
  19. package/commonjs/src/webapi/features/database.feature.js +151 -0
  20. package/commonjs/src/webapi/features/finalize.feature.js +46 -0
  21. package/commonjs/src/webapi/features/postman.feature.js +309 -0
  22. package/commonjs/src/webapi/models/api-package-json.model.js +57 -0
  23. package/commonjs/src/webapi/models/auth-config.model.js +23 -0
  24. package/commonjs/src/webapi/models/controller-source-file.model.js +180 -0
  25. package/commonjs/src/webapi/models/main-source-file.model.js +132 -0
  26. package/commonjs/src/webapi/models/sample-files.model.js +60 -0
  27. package/commonjs/v1/cli.js +15 -0
  28. package/commonjs/v1/domain/class-model.js +106 -0
  29. package/commonjs/v1/domain/compose.model.js +74 -0
  30. package/commonjs/v1/domain/context.js +53 -0
  31. package/commonjs/v1/domain/devcontainer.model.js +116 -0
  32. package/commonjs/v1/domain/dockerfile.model.js +62 -0
  33. package/commonjs/v1/domain/feature.js +19 -0
  34. package/commonjs/v1/domain/import-map.js +74 -0
  35. package/commonjs/v1/domain/index.js +68 -0
  36. package/commonjs/v1/domain/prompt.js +45 -0
  37. package/commonjs/v1/domain/workflow.js +37 -0
  38. package/commonjs/v1/features/api-core/feature.js +103 -0
  39. package/commonjs/v1/features/api-core/hello-controller.model.js +100 -0
  40. package/commonjs/v1/features/api-core/main-ts.model.js +85 -0
  41. package/commonjs/v1/features/api-core/scaffold-files.template.js +158 -0
  42. package/commonjs/v1/features/auth0/auth0-cli.js +151 -0
  43. package/commonjs/v1/features/auth0/feature.js +187 -0
  44. package/commonjs/v1/features/auth0/models.js +14 -0
  45. package/commonjs/v1/features/auth0/prod-config.template.js +19 -0
  46. package/commonjs/v1/features/cli-core/feature.js +37 -0
  47. package/commonjs/v1/features/cli-core/scaffold-files.template.js +103 -0
  48. package/commonjs/v1/features/devcontainer/feature.js +38 -0
  49. package/commonjs/v1/features/finalize/feature.js +48 -0
  50. package/commonjs/v1/features/postgresql/feature.js +81 -0
  51. package/commonjs/v1/features/postgresql/models.js +14 -0
  52. package/commonjs/v1/features/postman/collection.template.js +80 -0
  53. package/commonjs/v1/features/postman/environment.template.js +24 -0
  54. package/commonjs/v1/features/postman/feature.js +192 -0
  55. package/commonjs/v1/features/typeorm/feature.js +66 -0
  56. package/commonjs/v1/features/typeorm/scaffold-files.template.js +80 -0
  57. package/commonjs/v1/scaffold.js +50 -0
  58. package/commonjs/v1/version.js +32 -0
  59. package/commonjs/v1/workflows/api.js +29 -0
  60. package/commonjs/v1/workflows/cli.js +19 -0
  61. package/es6/src/cli.js +26 -5
  62. package/es6/src/models/compose.model.js +77 -0
  63. package/es6/src/models/config-yaml.model.js +30 -0
  64. package/es6/src/models/const.js +19 -0
  65. package/es6/src/models/container-image.model.js +84 -0
  66. package/es6/src/models/dev-container.model.js +68 -0
  67. package/es6/src/models/env-file.model.js +29 -0
  68. package/es6/src/models/gitignore.model.js +22 -0
  69. package/es6/src/models/launch-json.model.js +42 -0
  70. package/es6/src/models/package-json.model.js +60 -0
  71. package/es6/src/models/project.model.js +111 -0
  72. package/es6/src/models/source-file.js +3 -0
  73. package/es6/src/models/tsconfig.model.js +24 -0
  74. package/es6/src/models/vscode-settings.model.js +21 -0
  75. package/es6/src/services/scaffold.service.js +52 -0
  76. package/es6/src/webapi/create-api.js +151 -0
  77. package/es6/src/webapi/features/auth.feature.js +115 -0
  78. package/es6/src/webapi/features/auth0-cli.js +116 -0
  79. package/es6/src/webapi/features/database.feature.js +141 -0
  80. package/es6/src/webapi/features/finalize.feature.js +36 -0
  81. package/es6/src/webapi/features/postman.feature.js +258 -0
  82. package/es6/src/webapi/models/api-package-json.model.js +52 -0
  83. package/es6/src/webapi/models/auth-config.model.js +19 -0
  84. package/es6/src/webapi/models/controller-source-file.model.js +171 -0
  85. package/es6/src/webapi/models/main-source-file.model.js +128 -0
  86. package/es6/src/webapi/models/sample-files.model.js +42 -0
  87. package/es6/v1/cli.js +11 -0
  88. package/es6/v1/domain/class-model.js +104 -0
  89. package/es6/v1/domain/compose.model.js +61 -0
  90. package/es6/v1/domain/context.js +37 -0
  91. package/es6/v1/domain/devcontainer.model.js +104 -0
  92. package/es6/v1/domain/dockerfile.model.js +52 -0
  93. package/es6/v1/domain/feature.js +9 -0
  94. package/es6/v1/domain/import-map.js +64 -0
  95. package/es6/v1/domain/index.js +11 -0
  96. package/es6/v1/domain/prompt.js +27 -0
  97. package/es6/v1/domain/workflow.js +24 -0
  98. package/es6/v1/features/api-core/feature.js +93 -0
  99. package/es6/v1/features/api-core/hello-controller.model.js +96 -0
  100. package/es6/v1/features/api-core/main-ts.model.js +74 -0
  101. package/es6/v1/features/api-core/scaffold-files.template.js +116 -0
  102. package/es6/v1/features/auth0/auth0-cli.js +116 -0
  103. package/es6/v1/features/auth0/feature.js +136 -0
  104. package/es6/v1/features/auth0/models.js +4 -0
  105. package/es6/v1/features/auth0/prod-config.template.js +9 -0
  106. package/es6/v1/features/cli-core/feature.js +27 -0
  107. package/es6/v1/features/cli-core/scaffold-files.template.js +73 -0
  108. package/es6/v1/features/devcontainer/feature.js +28 -0
  109. package/es6/v1/features/finalize/feature.js +38 -0
  110. package/es6/v1/features/postgresql/feature.js +71 -0
  111. package/es6/v1/features/postgresql/models.js +4 -0
  112. package/es6/v1/features/postman/collection.template.js +70 -0
  113. package/es6/v1/features/postman/environment.template.js +14 -0
  114. package/es6/v1/features/postman/feature.js +141 -0
  115. package/es6/v1/features/typeorm/feature.js +56 -0
  116. package/es6/v1/features/typeorm/scaffold-files.template.js +56 -0
  117. package/es6/v1/scaffold.js +40 -0
  118. package/es6/v1/version.js +22 -0
  119. package/es6/v1/workflows/api.js +25 -0
  120. package/es6/v1/workflows/cli.js +9 -0
  121. package/package.json +2 -2
  122. package/types/src/models/compose.model.d.ts +32 -0
  123. package/types/src/models/config-yaml.model.d.ts +16 -0
  124. package/types/src/models/const.d.ts +17 -0
  125. package/types/src/models/container-image.model.d.ts +15 -0
  126. package/types/src/models/dev-container.model.d.ts +21 -0
  127. package/types/src/models/env-file.model.d.ts +14 -0
  128. package/types/src/models/gitignore.model.d.ts +6 -0
  129. package/types/src/models/launch-json.model.d.ts +5 -0
  130. package/types/src/models/package-json.model.d.ts +18 -0
  131. package/types/src/models/project.model.d.ts +55 -0
  132. package/types/src/models/source-file.d.ts +11 -0
  133. package/types/src/models/tsconfig.model.d.ts +5 -0
  134. package/types/src/models/vscode-settings.model.d.ts +7 -0
  135. package/types/src/services/scaffold.service.d.ts +22 -0
  136. package/types/src/webapi/create-api.d.ts +7 -0
  137. package/types/src/webapi/features/auth.feature.d.ts +7 -0
  138. package/types/src/webapi/features/auth0-cli.d.ts +22 -0
  139. package/types/src/webapi/features/database.feature.d.ts +5 -0
  140. package/types/src/webapi/features/finalize.feature.d.ts +2 -0
  141. package/types/src/webapi/features/postman.feature.d.ts +7 -0
  142. package/types/src/webapi/models/api-package-json.model.d.ts +17 -0
  143. package/types/src/webapi/models/auth-config.model.d.ts +18 -0
  144. package/types/src/webapi/models/controller-source-file.model.d.ts +42 -0
  145. package/types/src/webapi/models/main-source-file.model.d.ts +36 -0
  146. package/types/src/webapi/models/sample-files.model.d.ts +7 -0
  147. package/types/v1/cli.d.ts +2 -0
  148. package/types/v1/domain/class-model.d.ts +70 -0
  149. package/types/v1/domain/compose.model.d.ts +25 -0
  150. package/types/v1/domain/context.d.ts +36 -0
  151. package/types/v1/domain/devcontainer.model.d.ts +35 -0
  152. package/types/v1/domain/dockerfile.model.d.ts +11 -0
  153. package/types/v1/domain/feature.d.ts +29 -0
  154. package/types/v1/domain/import-map.d.ts +24 -0
  155. package/types/v1/domain/index.d.ts +12 -0
  156. package/types/v1/domain/prompt.d.ts +2 -0
  157. package/types/v1/domain/workflow.d.ts +14 -0
  158. package/types/v1/features/api-core/feature.d.ts +2 -0
  159. package/types/v1/features/api-core/hello-controller.model.d.ts +9 -0
  160. package/types/v1/features/api-core/main-ts.model.d.ts +31 -0
  161. package/types/v1/features/api-core/scaffold-files.template.d.ts +10 -0
  162. package/types/v1/features/auth0/auth0-cli.d.ts +22 -0
  163. package/types/v1/features/auth0/feature.d.ts +2 -0
  164. package/types/v1/features/auth0/models.d.ts +5 -0
  165. package/types/v1/features/auth0/prod-config.template.d.ts +1 -0
  166. package/types/v1/features/cli-core/feature.d.ts +2 -0
  167. package/types/v1/features/cli-core/scaffold-files.template.d.ts +6 -0
  168. package/types/v1/features/devcontainer/feature.d.ts +2 -0
  169. package/types/v1/features/finalize/feature.d.ts +2 -0
  170. package/types/v1/features/postgresql/feature.d.ts +2 -0
  171. package/types/v1/features/postgresql/models.d.ts +6 -0
  172. package/types/v1/features/postman/collection.template.d.ts +1 -0
  173. package/types/v1/features/postman/environment.template.d.ts +6 -0
  174. package/types/v1/features/postman/feature.d.ts +2 -0
  175. package/types/v1/features/typeorm/feature.d.ts +2 -0
  176. package/types/v1/features/typeorm/scaffold-files.template.d.ts +9 -0
  177. package/types/v1/scaffold.d.ts +3 -0
  178. package/types/v1/version.d.ts +2 -0
  179. package/types/v1/workflows/api.d.ts +8 -0
  180. package/types/v1/workflows/cli.d.ts +1 -0
  181. package/commonjs/src/scaffold.js +0 -89
  182. package/commonjs/src/templates.js +0 -305
  183. package/es6/src/scaffold.js +0 -79
  184. package/es6/src/templates.js +0 -245
  185. package/types/src/scaffold.d.ts +0 -6
  186. package/types/src/templates.d.ts +0 -20
@@ -0,0 +1,85 @@
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_KEY () {
13
+ return MAIN_TS_KEY;
14
+ },
15
+ get MainTsModel () {
16
+ return MainTsModel;
17
+ }
18
+ });
19
+ const _importmap = require("../../domain/import-map.js");
20
+ const _index = require("../../domain/index.js");
21
+ const MAIN_TS_KEY = (0, _index.modelKey)("main-ts");
22
+ class MainTsModel {
23
+ _applicationName;
24
+ _imports;
25
+ _builderChain;
26
+ _controllers = [];
27
+ constructor(applicationName){
28
+ this._applicationName = applicationName;
29
+ // Standard framework imports — insertion order matches desired output order.
30
+ this._imports = new _importmap.ImportMap().add("@decohere/scribe-pino").add("@decohere/cortex/http").add("@decohere/cortex/auth").add("@decohere/protocol").add("@decohere/cortex", "Builder").add("@decohere/cortex/providers", "FastifyProvider").add("@decohere/scribe", "scribe").add("@decohere/protocol", "YamlDataSource").add("./sample.service.js", "SampleService");
31
+ // Standard builder chain — features append; render appends .withControllers + .build.
32
+ this._builderChain = [
33
+ `.withHttpProvider(FastifyProvider)`,
34
+ `.withConfiguration(YamlDataSource)`,
35
+ `.withAuth()`,
36
+ `.withServices((cb) => { cb.registerSingleton(SampleService); })`
37
+ ];
38
+ }
39
+ // ── feature API ──────────────────────────────────────────────────────────
40
+ /** Add named value imports (or side-effect when called with no names). */ addImport(pkg, ...names) {
41
+ this._imports.add(pkg, ...names);
42
+ return this;
43
+ }
44
+ /** Add named type-only imports. */ addTypeImport(pkg, ...names) {
45
+ this._imports.addType(pkg, ...names);
46
+ return this;
47
+ }
48
+ /**
49
+ * Append a builder chain call inserted between `.withServices(…)` and
50
+ * `.withControllers(…)`. Pass the call with its leading dot,
51
+ * e.g. `.withTypeOrm({ … })`.
52
+ */ appendBuilderChain(call) {
53
+ this._builderChain.push(call);
54
+ return this;
55
+ }
56
+ // ── render-phase API ─────────────────────────────────────────────────────
57
+ /** Register a controller; adds its import and queues it for withControllers(). */ addController(model) {
58
+ const importPath = `./controllers/${model.fileName.replace(/\.ts$/, ".js")}`;
59
+ this._imports.add(importPath, model.className);
60
+ this._controllers.push({
61
+ className: model.className,
62
+ importPath
63
+ });
64
+ return this;
65
+ }
66
+ // ── rendering ─────────────────────────────────────────────────────────────
67
+ render() {
68
+ const controllersArg = this._controllers.map((c)=>c.className).join(", ");
69
+ const chainCalls = [
70
+ ...this._builderChain,
71
+ `.withControllers(${controllersArg})`,
72
+ `.build();`
73
+ ].map((call)=>`\t${call}`).join("\n");
74
+ const importSection = this._imports.render().join("\n");
75
+ return `${[
76
+ importSection,
77
+ `scribe.extend.withPinoPretty();`,
78
+ `const app = await Builder.create({ applicationName: "${this._applicationName}" })\n${chainCalls}`,
79
+ `await app.start({ port: 3000 });`,
80
+ `export default app;`
81
+ ].join("\n\n")}\n`;
82
+ }
83
+ }
84
+
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hcGktY29yZS9tYWluLXRzLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2xhc3NNb2RlbCB9IGZyb20gXCIuLi8uLi9kb21haW4vY2xhc3MtbW9kZWwuanNcIjtcbmltcG9ydCB7IEltcG9ydE1hcCB9IGZyb20gXCIuLi8uLi9kb21haW4vaW1wb3J0LW1hcC5qc1wiO1xuaW1wb3J0IHsgbW9kZWxLZXkgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2luZGV4LmpzXCI7XG5cbi8qKiBLZXkgZm9yIHJldHJpZXZpbmcgdGhlIE1haW5Uc01vZGVsIGZyb20gdGhlIEZlYXR1cmVNb2RlbFN0b3JlLiAqL1xuZXhwb3J0IGNvbnN0IE1BSU5fVFNfS0VZID0gbW9kZWxLZXk8TWFpblRzTW9kZWw+KFwibWFpbi10c1wiKTtcblxuLyoqXG4gKiBMaXZlIGJ1aWxkZXIgZm9yIGBwcm9qZWN0cy9hcGkvc3JjL21haW4udHNgLlxuICpcbiAqIFRoZSBhcGktY29yZSBmZWF0dXJlIGNyZWF0ZXMgYW4gaW5zdGFuY2UgaW4gaXRzIGBjb25maWd1cmVgIHBoYXNlLlxuICogT3RoZXIgZmVhdHVyZXMgKHR5cGVvcm0sIGF1dGgwLCDigKYpIGNhbGwgYGFkZEltcG9ydGAgLyBgYXBwZW5kQnVpbGRlckNoYWluYFxuICogaW4gdGhlaXIgb3duIGBjb25maWd1cmVgIHBoYXNlcy4gIFRoZSBhcGktY29yZSBgcmVuZGVyYCBwaGFzZSBjYWxsc1xuICogYGFkZENvbnRyb2xsZXIobW9kZWwpYCBmb3IgZWFjaCBjb250cm9sbGVyLCB0aGVuIGByZW5kZXIoKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYWluVHNNb2RlbCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uTmFtZTogc3RyaW5nO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9pbXBvcnRzOiBJbXBvcnRNYXA7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2J1aWxkZXJDaGFpbjogc3RyaW5nW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvbnRyb2xsZXJzOiBBcnJheTx7IGNsYXNzTmFtZTogc3RyaW5nOyBpbXBvcnRQYXRoOiBzdHJpbmcgfT4gPSBbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYXBwbGljYXRpb25OYW1lOiBzdHJpbmcpIHtcblx0XHR0aGlzLl9hcHBsaWNhdGlvbk5hbWUgPSBhcHBsaWNhdGlvbk5hbWU7XG5cblx0XHQvLyBTdGFuZGFyZCBmcmFtZXdvcmsgaW1wb3J0cyDigJQgaW5zZXJ0aW9uIG9yZGVyIG1hdGNoZXMgZGVzaXJlZCBvdXRwdXQgb3JkZXIuXG5cdFx0dGhpcy5faW1wb3J0cyA9IG5ldyBJbXBvcnRNYXAoKVxuXHRcdFx0LmFkZChcIkBkZWNvaGVyZS9zY3JpYmUtcGlub1wiKVxuXHRcdFx0LmFkZChcIkBkZWNvaGVyZS9jb3J0ZXgvaHR0cFwiKVxuXHRcdFx0LmFkZChcIkBkZWNvaGVyZS9jb3J0ZXgvYXV0aFwiKVxuXHRcdFx0LmFkZChcIkBkZWNvaGVyZS9wcm90b2NvbFwiKVxuXHRcdFx0LmFkZChcIkBkZWNvaGVyZS9jb3J0ZXhcIiwgXCJCdWlsZGVyXCIpXG5cdFx0XHQuYWRkKFwiQGRlY29oZXJlL2NvcnRleC9wcm92aWRlcnNcIiwgXCJGYXN0aWZ5UHJvdmlkZXJcIilcblx0XHRcdC5hZGQoXCJAZGVjb2hlcmUvc2NyaWJlXCIsIFwic2NyaWJlXCIpXG5cdFx0XHQuYWRkKFwiQGRlY29oZXJlL3Byb3RvY29sXCIsIFwiWWFtbERhdGFTb3VyY2VcIilcblx0XHRcdC5hZGQoXCIuL3NhbXBsZS5zZXJ2aWNlLmpzXCIsIFwiU2FtcGxlU2VydmljZVwiKTtcblxuXHRcdC8vIFN0YW5kYXJkIGJ1aWxkZXIgY2hhaW4g4oCUIGZlYXR1cmVzIGFwcGVuZDsgcmVuZGVyIGFwcGVuZHMgLndpdGhDb250cm9sbGVycyArIC5idWlsZC5cblx0XHR0aGlzLl9idWlsZGVyQ2hhaW4gPSBbXG5cdFx0XHRgLndpdGhIdHRwUHJvdmlkZXIoRmFzdGlmeVByb3ZpZGVyKWAsXG5cdFx0XHRgLndpdGhDb25maWd1cmF0aW9uKFlhbWxEYXRhU291cmNlKWAsXG5cdFx0XHRgLndpdGhBdXRoKClgLFxuXHRcdFx0YC53aXRoU2VydmljZXMoKGNiKSA9PiB7IGNiLnJlZ2lzdGVyU2luZ2xldG9uKFNhbXBsZVNlcnZpY2UpOyB9KWAsXG5cdFx0XTtcblx0fVxuXG5cdC8vIOKUgOKUgCBmZWF0dXJlIEFQSSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuXHQvKiogQWRkIG5hbWVkIHZhbHVlIGltcG9ydHMgKG9yIHNpZGUtZWZmZWN0IHdoZW4gY2FsbGVkIHdpdGggbm8gbmFtZXMpLiAqL1xuXHRwdWJsaWMgYWRkSW1wb3J0KHBrZzogc3RyaW5nLCAuLi5uYW1lczogc3RyaW5nW10pOiB0aGlzIHtcblx0XHR0aGlzLl9pbXBvcnRzLmFkZChwa2csIC4uLm5hbWVzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGQgbmFtZWQgdHlwZS1vbmx5IGltcG9ydHMuICovXG5cdHB1YmxpYyBhZGRUeXBlSW1wb3J0KHBrZzogc3RyaW5nLCAuLi5uYW1lczogc3RyaW5nW10pOiB0aGlzIHtcblx0XHR0aGlzLl9pbXBvcnRzLmFkZFR5cGUocGtnLCAuLi5uYW1lcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQXBwZW5kIGEgYnVpbGRlciBjaGFpbiBjYWxsIGluc2VydGVkIGJldHdlZW4gYC53aXRoU2VydmljZXMo4oCmKWAgYW5kXG5cdCAqIGAud2l0aENvbnRyb2xsZXJzKOKApilgLiAgUGFzcyB0aGUgY2FsbCB3aXRoIGl0cyBsZWFkaW5nIGRvdCxcblx0ICogZS5nLiBgLndpdGhUeXBlT3JtKHsg4oCmIH0pYC5cblx0ICovXG5cdHB1YmxpYyBhcHBlbmRCdWlsZGVyQ2hhaW4oY2FsbDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fYnVpbGRlckNoYWluLnB1c2goY2FsbCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvLyDilIDilIAgcmVuZGVyLXBoYXNlIEFQSSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuXHQvKiogUmVnaXN0ZXIgYSBjb250cm9sbGVyOyBhZGRzIGl0cyBpbXBvcnQgYW5kIHF1ZXVlcyBpdCBmb3Igd2l0aENvbnRyb2xsZXJzKCkuICovXG5cdHB1YmxpYyBhZGRDb250cm9sbGVyKG1vZGVsOiBDbGFzc01vZGVsKTogdGhpcyB7XG5cdFx0Y29uc3QgaW1wb3J0UGF0aCA9IGAuL2NvbnRyb2xsZXJzLyR7bW9kZWwuZmlsZU5hbWUucmVwbGFjZSgvXFwudHMkLywgXCIuanNcIil9YDtcblx0XHR0aGlzLl9pbXBvcnRzLmFkZChpbXBvcnRQYXRoLCBtb2RlbC5jbGFzc05hbWUpO1xuXHRcdHRoaXMuX2NvbnRyb2xsZXJzLnB1c2goeyBjbGFzc05hbWU6IG1vZGVsLmNsYXNzTmFtZSwgaW1wb3J0UGF0aCB9KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vIOKUgOKUgCByZW5kZXJpbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cblx0cHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXJzQXJnID0gdGhpcy5fY29udHJvbGxlcnMubWFwKChjKSA9PiBjLmNsYXNzTmFtZSkuam9pbihcIiwgXCIpO1xuXG5cdFx0Y29uc3QgY2hhaW5DYWxscyA9IFtcblx0XHRcdC4uLnRoaXMuX2J1aWxkZXJDaGFpbixcblx0XHRcdGAud2l0aENvbnRyb2xsZXJzKCR7Y29udHJvbGxlcnNBcmd9KWAsXG5cdFx0XHRgLmJ1aWxkKCk7YCxcblx0XHRdXG5cdFx0XHQubWFwKChjYWxsKSA9PiBgXFx0JHtjYWxsfWApXG5cdFx0XHQuam9pbihcIlxcblwiKTtcblxuXHRcdGNvbnN0IGltcG9ydFNlY3Rpb24gPSB0aGlzLl9pbXBvcnRzLnJlbmRlcigpLmpvaW4oXCJcXG5cIik7XG5cblx0XHRyZXR1cm4gYCR7W1xuXHRcdFx0aW1wb3J0U2VjdGlvbixcblx0XHRcdGBzY3JpYmUuZXh0ZW5kLndpdGhQaW5vUHJldHR5KCk7YCxcblx0XHRcdGBjb25zdCBhcHAgPSBhd2FpdCBCdWlsZGVyLmNyZWF0ZSh7IGFwcGxpY2F0aW9uTmFtZTogXCIke3RoaXMuX2FwcGxpY2F0aW9uTmFtZX1cIiB9KVxcbiR7Y2hhaW5DYWxsc31gLFxuXHRcdFx0YGF3YWl0IGFwcC5zdGFydCh7IHBvcnQ6IDMwMDAgfSk7YCxcblx0XHRcdGBleHBvcnQgZGVmYXVsdCBhcHA7YCxcblx0XHRdLmpvaW4oXCJcXG5cXG5cIil9XFxuYDtcblx0fVxufVxuIl0sIm5hbWVzIjpbIk1BSU5fVFNfS0VZIiwiTWFpblRzTW9kZWwiLCJtb2RlbEtleSIsIl9hcHBsaWNhdGlvbk5hbWUiLCJfaW1wb3J0cyIsIl9idWlsZGVyQ2hhaW4iLCJfY29udHJvbGxlcnMiLCJhcHBsaWNhdGlvbk5hbWUiLCJJbXBvcnRNYXAiLCJhZGQiLCJhZGRJbXBvcnQiLCJwa2ciLCJuYW1lcyIsImFkZFR5cGVJbXBvcnQiLCJhZGRUeXBlIiwiYXBwZW5kQnVpbGRlckNoYWluIiwiY2FsbCIsInB1c2giLCJhZGRDb250cm9sbGVyIiwibW9kZWwiLCJpbXBvcnRQYXRoIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwiY2xhc3NOYW1lIiwicmVuZGVyIiwiY29udHJvbGxlcnNBcmciLCJtYXAiLCJjIiwiam9pbiIsImNoYWluQ2FsbHMiLCJpbXBvcnRTZWN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQUthQTtlQUFBQTs7UUFVQUM7ZUFBQUE7OzsyQkFkYTt1QkFDRDtBQUdsQixNQUFNRCxjQUFjRSxJQUFBQSxlQUFRLEVBQWM7QUFVMUMsTUFBTUQ7SUFDS0UsaUJBQXlCO0lBQ3pCQyxTQUFvQjtJQUNwQkMsY0FBd0I7SUFDeEJDLGVBQWlFLEVBQUUsQ0FBQztJQUVyRixZQUFtQkMsZUFBdUIsQ0FBRTtRQUMzQyxJQUFJLENBQUNKLGdCQUFnQixHQUFHSTtRQUV4Qiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDSCxRQUFRLEdBQUcsSUFBSUksb0JBQVMsR0FDM0JDLEdBQUcsQ0FBQyx5QkFDSkEsR0FBRyxDQUFDLHlCQUNKQSxHQUFHLENBQUMseUJBQ0pBLEdBQUcsQ0FBQyxzQkFDSkEsR0FBRyxDQUFDLG9CQUFvQixXQUN4QkEsR0FBRyxDQUFDLDhCQUE4QixtQkFDbENBLEdBQUcsQ0FBQyxvQkFBb0IsVUFDeEJBLEdBQUcsQ0FBQyxzQkFBc0Isa0JBQzFCQSxHQUFHLENBQUMsdUJBQXVCO1FBRTdCLHNGQUFzRjtRQUN0RixJQUFJLENBQUNKLGFBQWEsR0FBRztZQUNwQixDQUFDLGtDQUFrQyxDQUFDO1lBQ3BDLENBQUMsa0NBQWtDLENBQUM7WUFDcEMsQ0FBQyxXQUFXLENBQUM7WUFDYixDQUFDLCtEQUErRCxDQUFDO1NBQ2pFO0lBQ0Y7SUFFQSw0RUFBNEU7SUFFNUUsd0VBQXdFLEdBQ3hFLEFBQU9LLFVBQVVDLEdBQVcsRUFBRSxHQUFHQyxLQUFlLEVBQVE7UUFDdkQsSUFBSSxDQUFDUixRQUFRLENBQUNLLEdBQUcsQ0FBQ0UsUUFBUUM7UUFDMUIsT0FBTyxJQUFJO0lBQ1o7SUFFQSxpQ0FBaUMsR0FDakMsQUFBT0MsY0FBY0YsR0FBVyxFQUFFLEdBQUdDLEtBQWUsRUFBUTtRQUMzRCxJQUFJLENBQUNSLFFBQVEsQ0FBQ1UsT0FBTyxDQUFDSCxRQUFRQztRQUM5QixPQUFPLElBQUk7SUFDWjtJQUVBOzs7O0VBSUMsR0FDRCxBQUFPRyxtQkFBbUJDLElBQVksRUFBUTtRQUM3QyxJQUFJLENBQUNYLGFBQWEsQ0FBQ1ksSUFBSSxDQUFDRDtRQUN4QixPQUFPLElBQUk7SUFDWjtJQUVBLDRFQUE0RTtJQUU1RSxnRkFBZ0YsR0FDaEYsQUFBT0UsY0FBY0MsS0FBaUIsRUFBUTtRQUM3QyxNQUFNQyxhQUFhLENBQUMsY0FBYyxFQUFFRCxNQUFNRSxRQUFRLENBQUNDLE9BQU8sQ0FBQyxTQUFTLFFBQVE7UUFDNUUsSUFBSSxDQUFDbEIsUUFBUSxDQUFDSyxHQUFHLENBQUNXLFlBQVlELE1BQU1JLFNBQVM7UUFDN0MsSUFBSSxDQUFDakIsWUFBWSxDQUFDVyxJQUFJLENBQUM7WUFBRU0sV0FBV0osTUFBTUksU0FBUztZQUFFSDtRQUFXO1FBQ2hFLE9BQU8sSUFBSTtJQUNaO0lBRUEsNkVBQTZFO0lBRXRFSSxTQUFpQjtRQUN2QixNQUFNQyxpQkFBaUIsSUFBSSxDQUFDbkIsWUFBWSxDQUFDb0IsR0FBRyxDQUFDLENBQUNDLElBQU1BLEVBQUVKLFNBQVMsRUFBRUssSUFBSSxDQUFDO1FBRXRFLE1BQU1DLGFBQWE7ZUFDZixJQUFJLENBQUN4QixhQUFhO1lBQ3JCLENBQUMsaUJBQWlCLEVBQUVvQixlQUFlLENBQUMsQ0FBQztZQUNyQyxDQUFDLFNBQVMsQ0FBQztTQUNYLENBQ0NDLEdBQUcsQ0FBQyxDQUFDVixPQUFTLENBQUMsRUFBRSxFQUFFQSxNQUFNLEVBQ3pCWSxJQUFJLENBQUM7UUFFUCxNQUFNRSxnQkFBZ0IsSUFBSSxDQUFDMUIsUUFBUSxDQUFDb0IsTUFBTSxHQUFHSSxJQUFJLENBQUM7UUFFbEQsT0FBTyxHQUFHO1lBQ1RFO1lBQ0EsQ0FBQywrQkFBK0IsQ0FBQztZQUNqQyxDQUFDLHFEQUFxRCxFQUFFLElBQUksQ0FBQzNCLGdCQUFnQixDQUFDLE1BQU0sRUFBRTBCLFlBQVk7WUFDbEcsQ0FBQyxnQ0FBZ0MsQ0FBQztZQUNsQyxDQUFDLG1CQUFtQixDQUFDO1NBQ3JCLENBQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQjtBQUNEIn0=
@@ -0,0 +1,158 @@
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 CONFIG_DEV_YAML () {
13
+ return CONFIG_DEV_YAML;
14
+ },
15
+ get GITIGNORE () {
16
+ return GITIGNORE;
17
+ },
18
+ get SAMPLE_CONFIG_TS () {
19
+ return SAMPLE_CONFIG_TS;
20
+ },
21
+ get SAMPLE_SERVICE_TS () {
22
+ return SAMPLE_SERVICE_TS;
23
+ },
24
+ get TSCONFIG () {
25
+ return TSCONFIG;
26
+ },
27
+ get VSCODE_LAUNCH_JSON () {
28
+ return VSCODE_LAUNCH_JSON;
29
+ },
30
+ get apiPackageJson () {
31
+ return apiPackageJson;
32
+ },
33
+ get configYaml () {
34
+ return configYaml;
35
+ },
36
+ get rootPackageJson () {
37
+ return rootPackageJson;
38
+ },
39
+ get vscodeSettingsJson () {
40
+ return vscodeSettingsJson;
41
+ }
42
+ });
43
+ const _version = require("../../version.js");
44
+ function rootPackageJson(name) {
45
+ return JSON.stringify({
46
+ name: `${name}.api`,
47
+ version: "0.0.1",
48
+ type: "module",
49
+ scripts: {
50
+ build: "forge build",
51
+ "build:watch": "forge build --watch",
52
+ dev: "flux serve"
53
+ },
54
+ dependencies: {
55
+ "@decohere/cortex": _version.CREATE_VERSION,
56
+ "@decohere/crucible": _version.CREATE_VERSION,
57
+ "@decohere/nexus": _version.CREATE_VERSION,
58
+ "@decohere/protocol": _version.CREATE_VERSION,
59
+ "@decohere/scribe": _version.CREATE_VERSION,
60
+ "@decohere/scribe-pino": _version.CREATE_VERSION,
61
+ "pino-pretty": "^13.0.0"
62
+ },
63
+ devDependencies: {
64
+ "@decohere/terminal": _version.CREATE_VERSION,
65
+ typescript: "^6.0.3"
66
+ }
67
+ }, null, 2);
68
+ }
69
+ function apiPackageJson(name) {
70
+ return JSON.stringify({
71
+ name: `@${name}/api`,
72
+ version: "0.0.1",
73
+ type: "module",
74
+ main: "src/main.ts",
75
+ dependencies: {
76
+ "@decohere/cortex": _version.CREATE_VERSION,
77
+ "@decohere/crucible": _version.CREATE_VERSION
78
+ }
79
+ }, null, 2);
80
+ }
81
+ const TSCONFIG = JSON.stringify({
82
+ compilerOptions: {
83
+ target: "ES2022",
84
+ module: "NodeNext",
85
+ moduleResolution: "NodeNext",
86
+ strict: true,
87
+ skipLibCheck: true,
88
+ experimentalDecorators: true,
89
+ emitDecoratorMetadata: true
90
+ }
91
+ }, null, 2);
92
+ const VSCODE_LAUNCH_JSON = JSON.stringify({
93
+ version: "0.2.0",
94
+ configurations: [
95
+ {
96
+ name: "Build",
97
+ type: "node",
98
+ request: "launch",
99
+ runtimeExecutable: "pnpm",
100
+ runtimeArgs: [
101
+ "build"
102
+ ],
103
+ console: "integratedTerminal",
104
+ cwd: `\${workspaceFolder}`
105
+ },
106
+ {
107
+ name: "Serve / Dev",
108
+ type: "node",
109
+ request: "launch",
110
+ runtimeExecutable: "pnpm",
111
+ runtimeArgs: [
112
+ "dev"
113
+ ],
114
+ console: "integratedTerminal",
115
+ cwd: `\${workspaceFolder}`
116
+ }
117
+ ]
118
+ }, null, 2);
119
+ function vscodeSettingsJson(name) {
120
+ return JSON.stringify({
121
+ "window.title": `${name}\${separator}\${activeEditorShort}`,
122
+ "window.titleSeparator": " | "
123
+ }, null, 2);
124
+ }
125
+ const GITIGNORE = `node_modules/
126
+ dist/
127
+ .env.local
128
+ .pnpm-store
129
+ `;
130
+ function configYaml() {
131
+ return `sample:\n greeting: Hello from configuration!\n`;
132
+ }
133
+ const CONFIG_DEV_YAML = `sample:
134
+ greeting: Hello from dev configuration!
135
+ `;
136
+ const SAMPLE_CONFIG_TS = `export class SampleConfig {
137
+ \tpublic greeting: string = "";
138
+ }
139
+ `;
140
+ const SAMPLE_SERVICE_TS = `import { inject, injectable } from "@decohere/crucible/decorators";
141
+ import { ConfigurationServiceToken } from "@decohere/nexus/configuration";
142
+ import type { IConfigurationService } from "@decohere/nexus/configuration";
143
+ import { SampleConfig } from "./sample.config.js";
144
+
145
+ @injectable()
146
+ export class SampleService {
147
+ \tpublic constructor(
148
+ \t\t@inject(ConfigurationServiceToken) private readonly config: IConfigurationService,
149
+ \t) {}
150
+
151
+ \tpublic async getGreeting(): Promise<string> {
152
+ \t\tconst config = await this.config.get(SampleConfig);
153
+ \t\treturn config.greeting;
154
+ \t}
155
+ }
156
+ `;
157
+
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hcGktY29yZS9zY2FmZm9sZC1maWxlcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDUkVBVEVfVkVSU0lPTiB9IGZyb20gXCIuLi8uLi92ZXJzaW9uLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByb290UGFja2FnZUpzb24obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuXHRcdHtcblx0XHRcdG5hbWU6IGAke25hbWV9LmFwaWAsXG5cdFx0XHR2ZXJzaW9uOiBcIjAuMC4xXCIsXG5cdFx0XHR0eXBlOiBcIm1vZHVsZVwiLFxuXHRcdFx0c2NyaXB0czoge1xuXHRcdFx0XHRidWlsZDogXCJmb3JnZSBidWlsZFwiLFxuXHRcdFx0XHRcImJ1aWxkOndhdGNoXCI6IFwiZm9yZ2UgYnVpbGQgLS13YXRjaFwiLFxuXHRcdFx0XHRkZXY6IFwiZmx1eCBzZXJ2ZVwiLFxuXHRcdFx0fSxcblx0XHRcdGRlcGVuZGVuY2llczoge1xuXHRcdFx0XHRcIkBkZWNvaGVyZS9jb3J0ZXhcIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFwiQGRlY29oZXJlL2NydWNpYmxlXCI6IENSRUFURV9WRVJTSU9OLFxuXHRcdFx0XHRcIkBkZWNvaGVyZS9uZXh1c1wiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdFx0XCJAZGVjb2hlcmUvcHJvdG9jb2xcIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFwiQGRlY29oZXJlL3NjcmliZVwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdFx0XCJAZGVjb2hlcmUvc2NyaWJlLXBpbm9cIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcdFwicGluby1wcmV0dHlcIjogXCJeMTMuMC4wXCIsXG5cdFx0XHR9LFxuXHRcdFx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XHRcdFwiQGRlY29oZXJlL3Rlcm1pbmFsXCI6IENSRUFURV9WRVJTSU9OLFxuXHRcdFx0XHR0eXBlc2NyaXB0OiBcIl42LjAuM1wiLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdG51bGwsXG5cdFx0Mixcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwaVBhY2thZ2VKc29uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRuYW1lOiBgQCR7bmFtZX0vYXBpYCxcblx0XHRcdHZlcnNpb246IFwiMC4wLjFcIixcblx0XHRcdHR5cGU6IFwibW9kdWxlXCIsXG5cdFx0XHRtYWluOiBcInNyYy9tYWluLnRzXCIsXG5cdFx0XHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcdFx0XCJAZGVjb2hlcmUvY29ydGV4XCI6IENSRUFURV9WRVJTSU9OLFxuXHRcdFx0XHRcIkBkZWNvaGVyZS9jcnVjaWJsZVwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRudWxsLFxuXHRcdDIsXG5cdCk7XG59XG5cbmV4cG9ydCBjb25zdCBUU0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuXHR7XG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XG5cdFx0XHR0YXJnZXQ6IFwiRVMyMDIyXCIsXG5cdFx0XHRtb2R1bGU6IFwiTm9kZU5leHRcIixcblx0XHRcdG1vZHVsZVJlc29sdXRpb246IFwiTm9kZU5leHRcIixcblx0XHRcdHN0cmljdDogdHJ1ZSxcblx0XHRcdHNraXBMaWJDaGVjazogdHJ1ZSxcblx0XHRcdGV4cGVyaW1lbnRhbERlY29yYXRvcnM6IHRydWUsXG5cdFx0XHRlbWl0RGVjb3JhdG9yTWV0YWRhdGE6IHRydWUsXG5cdFx0fSxcblx0fSxcblx0bnVsbCxcblx0Mixcbik7XG5cbmV4cG9ydCBjb25zdCBWU0NPREVfTEFVTkNIX0pTT04gPSBKU09OLnN0cmluZ2lmeShcblx0e1xuXHRcdHZlcnNpb246IFwiMC4yLjBcIixcblx0XHRjb25maWd1cmF0aW9uczogW1xuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiBcIkJ1aWxkXCIsXG5cdFx0XHRcdHR5cGU6IFwibm9kZVwiLFxuXHRcdFx0XHRyZXF1ZXN0OiBcImxhdW5jaFwiLFxuXHRcdFx0XHRydW50aW1lRXhlY3V0YWJsZTogXCJwbnBtXCIsXG5cdFx0XHRcdHJ1bnRpbWVBcmdzOiBbXCJidWlsZFwiXSxcblx0XHRcdFx0Y29uc29sZTogXCJpbnRlZ3JhdGVkVGVybWluYWxcIixcblx0XHRcdFx0Y3dkOiBgXFwke3dvcmtzcGFjZUZvbGRlcn1gLFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogXCJTZXJ2ZSAvIERldlwiLFxuXHRcdFx0XHR0eXBlOiBcIm5vZGVcIixcblx0XHRcdFx0cmVxdWVzdDogXCJsYXVuY2hcIixcblx0XHRcdFx0cnVudGltZUV4ZWN1dGFibGU6IFwicG5wbVwiLFxuXHRcdFx0XHRydW50aW1lQXJnczogW1wiZGV2XCJdLFxuXHRcdFx0XHRjb25zb2xlOiBcImludGVncmF0ZWRUZXJtaW5hbFwiLFxuXHRcdFx0XHRjd2Q6IGBcXCR7d29ya3NwYWNlRm9sZGVyfWAsXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH0sXG5cdG51bGwsXG5cdDIsXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gdnNjb2RlU2V0dGluZ3NKc29uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBKU09OLnN0cmluZ2lmeShcblx0XHR7XG5cdFx0XHRcIndpbmRvdy50aXRsZVwiOiBgJHtuYW1lfVxcJHtzZXBhcmF0b3J9XFwke2FjdGl2ZUVkaXRvclNob3J0fWAsXG5cdFx0XHRcIndpbmRvdy50aXRsZVNlcGFyYXRvclwiOiBcIiB8IFwiLFxuXHRcdH0sXG5cdFx0bnVsbCxcblx0XHQyLFxuXHQpO1xufVxuXG5leHBvcnQgY29uc3QgR0lUSUdOT1JFID0gYG5vZGVfbW9kdWxlcy9cbmRpc3QvXG4uZW52LmxvY2FsXG4ucG5wbS1zdG9yZVxuYDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ1lhbWwoKTogc3RyaW5nIHtcblx0cmV0dXJuIGBzYW1wbGU6XFxuICBncmVldGluZzogSGVsbG8gZnJvbSBjb25maWd1cmF0aW9uIVxcbmA7XG59XG5cbmV4cG9ydCBjb25zdCBDT05GSUdfREVWX1lBTUwgPSBgc2FtcGxlOlxuICBncmVldGluZzogSGVsbG8gZnJvbSBkZXYgY29uZmlndXJhdGlvbiFcbmA7XG5cbmV4cG9ydCBjb25zdCBTQU1QTEVfQ09ORklHX1RTID0gYGV4cG9ydCBjbGFzcyBTYW1wbGVDb25maWcge1xuXFx0cHVibGljIGdyZWV0aW5nOiBzdHJpbmcgPSBcIlwiO1xufVxuYDtcblxuZXhwb3J0IGNvbnN0IFNBTVBMRV9TRVJWSUNFX1RTID0gYGltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2VUb2tlbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBJQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IFNhbXBsZUNvbmZpZyB9IGZyb20gXCIuL3NhbXBsZS5jb25maWcuanNcIjtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNhbXBsZVNlcnZpY2Uge1xuXFx0cHVibGljIGNvbnN0cnVjdG9yKFxuXFx0XFx0QGluamVjdChDb25maWd1cmF0aW9uU2VydmljZVRva2VuKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuXFx0KSB7fVxuXG5cXHRwdWJsaWMgYXN5bmMgZ2V0R3JlZXRpbmcoKTogUHJvbWlzZTxzdHJpbmc+IHtcblxcdFxcdGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuY29uZmlnLmdldChTYW1wbGVDb25maWcpO1xuXFx0XFx0cmV0dXJuIGNvbmZpZy5ncmVldGluZztcblxcdH1cbn1cbmA7XG4iXSwibmFtZXMiOlsiQ09ORklHX0RFVl9ZQU1MIiwiR0lUSUdOT1JFIiwiU0FNUExFX0NPTkZJR19UUyIsIlNBTVBMRV9TRVJWSUNFX1RTIiwiVFNDT05GSUciLCJWU0NPREVfTEFVTkNIX0pTT04iLCJhcGlQYWNrYWdlSnNvbiIsImNvbmZpZ1lhbWwiLCJyb290UGFja2FnZUpzb24iLCJ2c2NvZGVTZXR0aW5nc0pzb24iLCJuYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInZlcnNpb24iLCJ0eXBlIiwic2NyaXB0cyIsImJ1aWxkIiwiZGV2IiwiZGVwZW5kZW5jaWVzIiwiQ1JFQVRFX1ZFUlNJT04iLCJkZXZEZXBlbmRlbmNpZXMiLCJ0eXBlc2NyaXB0IiwibWFpbiIsImNvbXBpbGVyT3B0aW9ucyIsInRhcmdldCIsIm1vZHVsZSIsIm1vZHVsZVJlc29sdXRpb24iLCJzdHJpY3QiLCJza2lwTGliQ2hlY2siLCJleHBlcmltZW50YWxEZWNvcmF0b3JzIiwiZW1pdERlY29yYXRvck1ldGFkYXRhIiwiY29uZmlndXJhdGlvbnMiLCJyZXF1ZXN0IiwicnVudGltZUV4ZWN1dGFibGUiLCJydW50aW1lQXJncyIsImNvbnNvbGUiLCJjd2QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBa0hhQTtlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQUtBQztlQUFBQTs7UUExRUFDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBakNHQztlQUFBQTs7UUE4RUFDO2VBQUFBOztRQTVHQUM7ZUFBQUE7O1FBMkZBQztlQUFBQTs7O3lCQTdGZTtBQUV4QixTQUFTRCxnQkFBZ0JFLElBQVk7SUFDM0MsT0FBT0MsS0FBS0MsU0FBUyxDQUNwQjtRQUNDRixNQUFNLEdBQUdBLEtBQUssSUFBSSxDQUFDO1FBQ25CRyxTQUFTO1FBQ1RDLE1BQU07UUFDTkMsU0FBUztZQUNSQyxPQUFPO1lBQ1AsZUFBZTtZQUNmQyxLQUFLO1FBQ047UUFDQUMsY0FBYztZQUNiLG9CQUFvQkMsdUJBQWM7WUFDbEMsc0JBQXNCQSx1QkFBYztZQUNwQyxtQkFBbUJBLHVCQUFjO1lBQ2pDLHNCQUFzQkEsdUJBQWM7WUFDcEMsb0JBQW9CQSx1QkFBYztZQUNsQyx5QkFBeUJBLHVCQUFjO1lBQ3ZDLGVBQWU7UUFDaEI7UUFDQUMsaUJBQWlCO1lBQ2hCLHNCQUFzQkQsdUJBQWM7WUFDcENFLFlBQVk7UUFDYjtJQUNELEdBQ0EsTUFDQTtBQUVGO0FBRU8sU0FBU2YsZUFBZUksSUFBWTtJQUMxQyxPQUFPQyxLQUFLQyxTQUFTLENBQ3BCO1FBQ0NGLE1BQU0sQ0FBQyxDQUFDLEVBQUVBLEtBQUssSUFBSSxDQUFDO1FBQ3BCRyxTQUFTO1FBQ1RDLE1BQU07UUFDTlEsTUFBTTtRQUNOSixjQUFjO1lBQ2Isb0JBQW9CQyx1QkFBYztZQUNsQyxzQkFBc0JBLHVCQUFjO1FBQ3JDO0lBQ0QsR0FDQSxNQUNBO0FBRUY7QUFFTyxNQUFNZixXQUFXTyxLQUFLQyxTQUFTLENBQ3JDO0lBQ0NXLGlCQUFpQjtRQUNoQkMsUUFBUTtRQUNSQyxRQUFRO1FBQ1JDLGtCQUFrQjtRQUNsQkMsUUFBUTtRQUNSQyxjQUFjO1FBQ2RDLHdCQUF3QjtRQUN4QkMsdUJBQXVCO0lBQ3hCO0FBQ0QsR0FDQSxNQUNBO0FBR00sTUFBTXpCLHFCQUFxQk0sS0FBS0MsU0FBUyxDQUMvQztJQUNDQyxTQUFTO0lBQ1RrQixnQkFBZ0I7UUFDZjtZQUNDckIsTUFBTTtZQUNOSSxNQUFNO1lBQ05rQixTQUFTO1lBQ1RDLG1CQUFtQjtZQUNuQkMsYUFBYTtnQkFBQzthQUFRO1lBQ3RCQyxTQUFTO1lBQ1RDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUMzQjtRQUNBO1lBQ0MxQixNQUFNO1lBQ05JLE1BQU07WUFDTmtCLFNBQVM7WUFDVEMsbUJBQW1CO1lBQ25CQyxhQUFhO2dCQUFDO2FBQU07WUFDcEJDLFNBQVM7WUFDVEMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzNCO0tBQ0E7QUFDRixHQUNBLE1BQ0E7QUFHTSxTQUFTM0IsbUJBQW1CQyxJQUFZO0lBQzlDLE9BQU9DLEtBQUtDLFNBQVMsQ0FDcEI7UUFDQyxnQkFBZ0IsR0FBR0YsS0FBSyxrQ0FBa0MsQ0FBQztRQUMzRCx5QkFBeUI7SUFDMUIsR0FDQSxNQUNBO0FBRUY7QUFFTyxNQUFNVCxZQUFZLENBQUM7Ozs7QUFJMUIsQ0FBQztBQUVNLFNBQVNNO0lBQ2YsT0FBTyxDQUFDLGdEQUFnRCxDQUFDO0FBQzFEO0FBRU8sTUFBTVAsa0JBQWtCLENBQUM7O0FBRWhDLENBQUM7QUFFTSxNQUFNRSxtQkFBbUIsQ0FBQzs7O0FBR2pDLENBQUM7QUFFTSxNQUFNQyxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCbEMsQ0FBQyJ9
@@ -0,0 +1,151 @@
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 Auth0AuthError () {
13
+ return Auth0AuthError;
14
+ },
15
+ get REQUIRED_SCOPES () {
16
+ return REQUIRED_SCOPES;
17
+ },
18
+ get createApi () {
19
+ return createApi;
20
+ },
21
+ get createSpaApp () {
22
+ return createSpaApp;
23
+ },
24
+ get isInstalled () {
25
+ return isInstalled;
26
+ },
27
+ get listApis () {
28
+ return listApis;
29
+ },
30
+ get listTenants () {
31
+ return listTenants;
32
+ },
33
+ get login () {
34
+ return login;
35
+ }
36
+ });
37
+ const _nodechild_process = require("node:child_process");
38
+ const REQUIRED_SCOPES = "create:clients";
39
+ /** Hard timeout for any Management API call. Prevents indefinite hangs on token re-auth. */ const API_TIMEOUT_MS = 8_000;
40
+ class Auth0AuthError extends Error {
41
+ constructor(message){
42
+ super(message);
43
+ this.name = "Auth0AuthError";
44
+ }
45
+ }
46
+ /** Returns true if an error or stderr output looks like an expired/missing token. */ function isAuthError(text) {
47
+ return text.includes("renew access token") || text.includes("log in") || text.includes("Unauthorized");
48
+ }
49
+ /** Run an auth0 CLI command with a hard timeout. Returns stdout on success, throws on failure. */ function runAuth0(args) {
50
+ const result = (0, _nodechild_process.spawnSync)("auth0", args, {
51
+ encoding: "utf8",
52
+ timeout: API_TIMEOUT_MS,
53
+ input: "",
54
+ stdio: "pipe"
55
+ });
56
+ if (result.error) {
57
+ // ETIMEDOUT means the process was killed by the timeout
58
+ const msg = result.error.message;
59
+ if (isAuthError(msg) || result.error.code === "ETIMEDOUT") {
60
+ throw new Auth0AuthError(msg);
61
+ }
62
+ throw result.error;
63
+ }
64
+ if (result.status !== 0) {
65
+ const stderr = result.stderr ?? "";
66
+ if (isAuthError(stderr)) throw new Auth0AuthError(stderr);
67
+ throw new Error(stderr || `auth0 exited with code ${result.status}`);
68
+ }
69
+ return result.stdout;
70
+ }
71
+ function isInstalled() {
72
+ try {
73
+ (0, _nodechild_process.execFileSync)("auth0", [
74
+ "--version"
75
+ ], {
76
+ stdio: "pipe"
77
+ });
78
+ return true;
79
+ } catch {
80
+ return false;
81
+ }
82
+ }
83
+ function listTenants() {
84
+ try {
85
+ const out = (0, _nodechild_process.execFileSync)("auth0", [
86
+ "tenants",
87
+ "list",
88
+ "--json"
89
+ ], {
90
+ encoding: "utf8",
91
+ stdio: "pipe"
92
+ });
93
+ return JSON.parse(out);
94
+ } catch {
95
+ return [];
96
+ }
97
+ }
98
+ function login() {
99
+ const result = (0, _nodechild_process.spawnSync)("auth0", [
100
+ "login",
101
+ "--scopes",
102
+ REQUIRED_SCOPES
103
+ ], {
104
+ stdio: "inherit"
105
+ });
106
+ return result.status === 0;
107
+ }
108
+ function listApis() {
109
+ try {
110
+ const out = runAuth0([
111
+ "apis",
112
+ "list",
113
+ "--json",
114
+ "--no-input"
115
+ ]);
116
+ return JSON.parse(out);
117
+ } catch (err) {
118
+ if (err instanceof Auth0AuthError) throw err;
119
+ return [];
120
+ }
121
+ }
122
+ function createApi(name, identifier) {
123
+ const out = runAuth0([
124
+ "apis",
125
+ "create",
126
+ "--name",
127
+ name,
128
+ "--identifier",
129
+ identifier,
130
+ "--json",
131
+ "--no-input"
132
+ ]);
133
+ return JSON.parse(out);
134
+ }
135
+ function createSpaApp(name, callbackUrl) {
136
+ const out = runAuth0([
137
+ "apps",
138
+ "create",
139
+ "--name",
140
+ name,
141
+ "--type",
142
+ "spa",
143
+ "--callbacks",
144
+ callbackUrl,
145
+ "--json",
146
+ "--no-input"
147
+ ]);
148
+ return JSON.parse(out);
149
+ }
150
+
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hdXRoMC9hdXRoMC1jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY0ZpbGVTeW5jLCBzcGF3blN5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5cbmNvbnN0IFJFUVVJUkVEX1NDT1BFUyA9IFwiY3JlYXRlOmNsaWVudHNcIjtcbi8qKiBIYXJkIHRpbWVvdXQgZm9yIGFueSBNYW5hZ2VtZW50IEFQSSBjYWxsLiBQcmV2ZW50cyBpbmRlZmluaXRlIGhhbmdzIG9uIHRva2VuIHJlLWF1dGguICovXG5jb25zdCBBUElfVElNRU9VVF9NUyA9IDhfMDAwO1xuXG5leHBvcnQgY2xhc3MgQXV0aDBBdXRoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcblx0XHRzdXBlcihtZXNzYWdlKTtcblx0XHR0aGlzLm5hbWUgPSBcIkF1dGgwQXV0aEVycm9yXCI7XG5cdH1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciBvciBzdGRlcnIgb3V0cHV0IGxvb2tzIGxpa2UgYW4gZXhwaXJlZC9taXNzaW5nIHRva2VuLiAqL1xuZnVuY3Rpb24gaXNBdXRoRXJyb3IodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiAoXG5cdFx0dGV4dC5pbmNsdWRlcyhcInJlbmV3IGFjY2VzcyB0b2tlblwiKSB8fFxuXHRcdHRleHQuaW5jbHVkZXMoXCJsb2cgaW5cIikgfHxcblx0XHR0ZXh0LmluY2x1ZGVzKFwiVW5hdXRob3JpemVkXCIpXG5cdCk7XG59XG5cbi8qKiBSdW4gYW4gYXV0aDAgQ0xJIGNvbW1hbmQgd2l0aCBhIGhhcmQgdGltZW91dC4gUmV0dXJucyBzdGRvdXQgb24gc3VjY2VzcywgdGhyb3dzIG9uIGZhaWx1cmUuICovXG5mdW5jdGlvbiBydW5BdXRoMChhcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcImF1dGgwXCIsIGFyZ3MsIHtcblx0XHRlbmNvZGluZzogXCJ1dGY4XCIsXG5cdFx0dGltZW91dDogQVBJX1RJTUVPVVRfTVMsXG5cdFx0aW5wdXQ6IFwiXCIsXG5cdFx0c3RkaW86IFwicGlwZVwiLFxuXHR9KTtcblxuXHRpZiAocmVzdWx0LmVycm9yKSB7XG5cdFx0Ly8gRVRJTUVET1VUIG1lYW5zIHRoZSBwcm9jZXNzIHdhcyBraWxsZWQgYnkgdGhlIHRpbWVvdXRcblx0XHRjb25zdCBtc2cgPSByZXN1bHQuZXJyb3IubWVzc2FnZTtcblx0XHRpZiAoaXNBdXRoRXJyb3IobXNnKSB8fCAocmVzdWx0LmVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSA9PT0gXCJFVElNRURPVVRcIikge1xuXHRcdFx0dGhyb3cgbmV3IEF1dGgwQXV0aEVycm9yKG1zZyk7XG5cdFx0fVxuXHRcdHRocm93IHJlc3VsdC5lcnJvcjtcblx0fVxuXG5cdGlmIChyZXN1bHQuc3RhdHVzICE9PSAwKSB7XG5cdFx0Y29uc3Qgc3RkZXJyID0gcmVzdWx0LnN0ZGVyciA/PyBcIlwiO1xuXHRcdGlmIChpc0F1dGhFcnJvcihzdGRlcnIpKSB0aHJvdyBuZXcgQXV0aDBBdXRoRXJyb3Ioc3RkZXJyKTtcblx0XHR0aHJvdyBuZXcgRXJyb3Ioc3RkZXJyIHx8IGBhdXRoMCBleGl0ZWQgd2l0aCBjb2RlICR7cmVzdWx0LnN0YXR1c31gKTtcblx0fVxuXG5cdHJldHVybiByZXN1bHQuc3Rkb3V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGgwVGVuYW50IHtcblx0bmFtZTogc3RyaW5nO1xuXHRhY3RpdmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0YWxsZWQoKTogYm9vbGVhbiB7XG5cdHRyeSB7XG5cdFx0ZXhlY0ZpbGVTeW5jKFwiYXV0aDBcIiwgW1wiLS12ZXJzaW9uXCJdLCB7IHN0ZGlvOiBcInBpcGVcIiB9KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0VGVuYW50cygpOiBBdXRoMFRlbmFudFtdIHtcblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBleGVjRmlsZVN5bmMoXCJhdXRoMFwiLCBbXCJ0ZW5hbnRzXCIsIFwibGlzdFwiLCBcIi0tanNvblwiXSwge1xuXHRcdFx0ZW5jb2Rpbmc6IFwidXRmOFwiLFxuXHRcdFx0c3RkaW86IFwicGlwZVwiLFxuXHRcdH0pO1xuXHRcdHJldHVybiBKU09OLnBhcnNlKG91dCkgYXMgQXV0aDBUZW5hbnRbXTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dpbigpOiBib29sZWFuIHtcblx0Y29uc3QgcmVzdWx0ID0gc3Bhd25TeW5jKFwiYXV0aDBcIiwgW1wibG9naW5cIiwgXCItLXNjb3Blc1wiLCBSRVFVSVJFRF9TQ09QRVNdLCB7XG5cdFx0c3RkaW86IFwiaW5oZXJpdFwiLFxuXHR9KTtcblx0cmV0dXJuIHJlc3VsdC5zdGF0dXMgPT09IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0QXBpcygpOiBBcnJheTx7IGlkZW50aWZpZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+IHtcblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBydW5BdXRoMChbXCJhcGlzXCIsIFwibGlzdFwiLCBcIi0tanNvblwiLCBcIi0tbm8taW5wdXRcIl0pO1xuXHRcdHJldHVybiBKU09OLnBhcnNlKG91dCkgYXMgQXJyYXk8eyBpZGVudGlmaWVyOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9Pjtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIEF1dGgwQXV0aEVycm9yKSB0aHJvdyBlcnI7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcGkobmFtZTogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcpOiB7IGlkZW50aWZpZXI6IHN0cmluZyB9IHtcblx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBpc1wiLFxuXHRcdFwiY3JlYXRlXCIsXG5cdFx0XCItLW5hbWVcIixcblx0XHRuYW1lLFxuXHRcdFwiLS1pZGVudGlmaWVyXCIsXG5cdFx0aWRlbnRpZmllcixcblx0XHRcIi0tanNvblwiLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0cmV0dXJuIEpTT04ucGFyc2Uob3V0KSBhcyB7IGlkZW50aWZpZXI6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3BhQXBwKG5hbWU6IHN0cmluZywgY2FsbGJhY2tVcmw6IHN0cmluZyk6IHsgY2xpZW50X2lkOiBzdHJpbmcgfSB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwcHNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0tdHlwZVwiLFxuXHRcdFwic3BhXCIsXG5cdFx0XCItLWNhbGxiYWNrc1wiLFxuXHRcdGNhbGxiYWNrVXJsLFxuXHRcdFwiLS1qc29uXCIsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRyZXR1cm4gSlNPTi5wYXJzZShvdXQpIGFzIHsgY2xpZW50X2lkOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IHsgUkVRVUlSRURfU0NPUEVTIH07XG4iXSwibmFtZXMiOlsiQXV0aDBBdXRoRXJyb3IiLCJSRVFVSVJFRF9TQ09QRVMiLCJjcmVhdGVBcGkiLCJjcmVhdGVTcGFBcHAiLCJpc0luc3RhbGxlZCIsImxpc3RBcGlzIiwibGlzdFRlbmFudHMiLCJsb2dpbiIsIkFQSV9USU1FT1VUX01TIiwiRXJyb3IiLCJtZXNzYWdlIiwibmFtZSIsImlzQXV0aEVycm9yIiwidGV4dCIsImluY2x1ZGVzIiwicnVuQXV0aDAiLCJhcmdzIiwicmVzdWx0Iiwic3Bhd25TeW5jIiwiZW5jb2RpbmciLCJ0aW1lb3V0IiwiaW5wdXQiLCJzdGRpbyIsImVycm9yIiwibXNnIiwiY29kZSIsInN0YXR1cyIsInN0ZGVyciIsInN0ZG91dCIsImV4ZWNGaWxlU3luYyIsIm91dCIsIkpTT04iLCJwYXJzZSIsImVyciIsImlkZW50aWZpZXIiLCJjYWxsYmFja1VybCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFNYUE7ZUFBQUE7O1FBb0hKQztlQUFBQTs7UUE5Qk9DO2VBQUFBOztRQWNBQztlQUFBQTs7UUFwREFDO2VBQUFBOztRQTRCQUM7ZUFBQUE7O1FBbkJBQztlQUFBQTs7UUFZQUM7ZUFBQUE7OzttQ0EzRXdCO0FBRXhDLE1BQU1OLGtCQUFrQjtBQUN4QiwwRkFBMEYsR0FDMUYsTUFBTU8saUJBQWlCO0FBRWhCLE1BQU1SLHVCQUF1QlM7SUFDbkMsWUFBbUJDLE9BQWUsQ0FBRTtRQUNuQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxJQUFJLEdBQUc7SUFDYjtBQUNEO0FBRUEsbUZBQW1GLEdBQ25GLFNBQVNDLFlBQVlDLElBQVk7SUFDaEMsT0FDQ0EsS0FBS0MsUUFBUSxDQUFDLHlCQUNkRCxLQUFLQyxRQUFRLENBQUMsYUFDZEQsS0FBS0MsUUFBUSxDQUFDO0FBRWhCO0FBRUEsZ0dBQWdHLEdBQ2hHLFNBQVNDLFNBQVNDLElBQWM7SUFDL0IsTUFBTUMsU0FBU0MsSUFBQUEsNEJBQVMsRUFBQyxTQUFTRixNQUFNO1FBQ3ZDRyxVQUFVO1FBQ1ZDLFNBQVNaO1FBQ1RhLE9BQU87UUFDUEMsT0FBTztJQUNSO0lBRUEsSUFBSUwsT0FBT00sS0FBSyxFQUFFO1FBQ2pCLHdEQUF3RDtRQUN4RCxNQUFNQyxNQUFNUCxPQUFPTSxLQUFLLENBQUNiLE9BQU87UUFDaEMsSUFBSUUsWUFBWVksUUFBUSxBQUFDUCxPQUFPTSxLQUFLLENBQTJCRSxJQUFJLEtBQUssYUFBYTtZQUNyRixNQUFNLElBQUl6QixlQUFld0I7UUFDMUI7UUFDQSxNQUFNUCxPQUFPTSxLQUFLO0lBQ25CO0lBRUEsSUFBSU4sT0FBT1MsTUFBTSxLQUFLLEdBQUc7UUFDeEIsTUFBTUMsU0FBU1YsT0FBT1UsTUFBTSxJQUFJO1FBQ2hDLElBQUlmLFlBQVllLFNBQVMsTUFBTSxJQUFJM0IsZUFBZTJCO1FBQ2xELE1BQU0sSUFBSWxCLE1BQU1rQixVQUFVLENBQUMsdUJBQXVCLEVBQUVWLE9BQU9TLE1BQU0sRUFBRTtJQUNwRTtJQUVBLE9BQU9ULE9BQU9XLE1BQU07QUFDckI7QUFPTyxTQUFTeEI7SUFDZixJQUFJO1FBQ0h5QixJQUFBQSwrQkFBWSxFQUFDLFNBQVM7WUFBQztTQUFZLEVBQUU7WUFBRVAsT0FBTztRQUFPO1FBQ3JELE9BQU87SUFDUixFQUFFLE9BQU07UUFDUCxPQUFPO0lBQ1I7QUFDRDtBQUVPLFNBQVNoQjtJQUNmLElBQUk7UUFDSCxNQUFNd0IsTUFBTUQsSUFBQUEsK0JBQVksRUFBQyxTQUFTO1lBQUM7WUFBVztZQUFRO1NBQVMsRUFBRTtZQUNoRVYsVUFBVTtZQUNWRyxPQUFPO1FBQ1I7UUFDQSxPQUFPUyxLQUFLQyxLQUFLLENBQUNGO0lBQ25CLEVBQUUsT0FBTTtRQUNQLE9BQU8sRUFBRTtJQUNWO0FBQ0Q7QUFFTyxTQUFTdkI7SUFDZixNQUFNVSxTQUFTQyxJQUFBQSw0QkFBUyxFQUFDLFNBQVM7UUFBQztRQUFTO1FBQVlqQjtLQUFnQixFQUFFO1FBQ3pFcUIsT0FBTztJQUNSO0lBQ0EsT0FBT0wsT0FBT1MsTUFBTSxLQUFLO0FBQzFCO0FBRU8sU0FBU3JCO0lBQ2YsSUFBSTtRQUNILE1BQU15QixNQUFNZixTQUFTO1lBQUM7WUFBUTtZQUFRO1lBQVU7U0FBYTtRQUM3RCxPQUFPZ0IsS0FBS0MsS0FBSyxDQUFDRjtJQUNuQixFQUFFLE9BQU9HLEtBQUs7UUFDYixJQUFJQSxlQUFlakMsZ0JBQWdCLE1BQU1pQztRQUN6QyxPQUFPLEVBQUU7SUFDVjtBQUNEO0FBRU8sU0FBUy9CLFVBQVVTLElBQVksRUFBRXVCLFVBQWtCO0lBQ3pELE1BQU1KLE1BQU1mLFNBQVM7UUFDcEI7UUFDQTtRQUNBO1FBQ0FKO1FBQ0E7UUFDQXVCO1FBQ0E7UUFDQTtLQUNBO0lBQ0QsT0FBT0gsS0FBS0MsS0FBSyxDQUFDRjtBQUNuQjtBQUVPLFNBQVMzQixhQUFhUSxJQUFZLEVBQUV3QixXQUFtQjtJQUM3RCxNQUFNTCxNQUFNZixTQUFTO1FBQ3BCO1FBQ0E7UUFDQTtRQUNBSjtRQUNBO1FBQ0E7UUFDQTtRQUNBd0I7UUFDQTtRQUNBO0tBQ0E7SUFDRCxPQUFPSixLQUFLQyxLQUFLLENBQUNGO0FBQ25CIn0=
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "auth0Feature", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return auth0Feature;
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-cli.js"));
15
+ const _models = require("./models.js");
16
+ const _prodconfigtemplate = require("./prod-config.template.js");
17
+ function _getRequireWildcardCache(nodeInterop) {
18
+ if (typeof WeakMap !== "function") return null;
19
+ var cacheBabelInterop = new WeakMap();
20
+ var cacheNodeInterop = new WeakMap();
21
+ return (_getRequireWildcardCache = function(nodeInterop) {
22
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
23
+ })(nodeInterop);
24
+ }
25
+ function _interop_require_wildcard(obj, nodeInterop) {
26
+ if (!nodeInterop && obj && obj.__esModule) {
27
+ return obj;
28
+ }
29
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
30
+ return {
31
+ default: obj
32
+ };
33
+ }
34
+ var cache = _getRequireWildcardCache(nodeInterop);
35
+ if (cache && cache.has(obj)) {
36
+ return cache.get(obj);
37
+ }
38
+ var newObj = {
39
+ __proto__: null
40
+ };
41
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
42
+ for(var key in obj){
43
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
44
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
45
+ if (desc && (desc.get || desc.set)) {
46
+ Object.defineProperty(newObj, key, desc);
47
+ } else {
48
+ newObj[key] = obj[key];
49
+ }
50
+ }
51
+ }
52
+ newObj.default = obj;
53
+ if (cache) {
54
+ cache.set(obj, newObj);
55
+ }
56
+ return newObj;
57
+ }
58
+ const enabled = (ctx)=>ctx.opts.idp === "auth0";
59
+ /**
60
+ * Resolve phase: drive the auth0 CLI to authenticate the user and gather an
61
+ * issuer + audience pair. Stored under AUTH0_CONFIG_KEY for downstream
62
+ * features (render, postman integrate).
63
+ *
64
+ * Skipped under --yes (non-interactive).
65
+ */ async function resolve(ctx) {
66
+ if (ctx.opts.yes) return ctx;
67
+ if (!_auth0cli.isInstalled()) {
68
+ console.error("\n The Auth0 CLI is required for automated setup.\n" + " Install: brew install auth0/auth0-cli/auth0\n" + " Or visit: https://github.com/auth0/auth0-cli\n");
69
+ process.exit(1);
70
+ }
71
+ // Ensure both the regular and Management API tokens are valid before prompting.
72
+ process.stdout.write("\n Checking Auth0 credentials...");
73
+ let tenants = _auth0cli.listTenants();
74
+ if (tenants.length === 0) {
75
+ process.stdout.write(" not logged in.\n");
76
+ console.log(" Logging in to Auth0 (your browser will open)...");
77
+ if (!_auth0cli.login()) {
78
+ console.error("\n Auth0 login failed.");
79
+ process.exit(1);
80
+ }
81
+ tenants = _auth0cli.listTenants();
82
+ }
83
+ try {
84
+ _auth0cli.listApis(); // probes the Management API token
85
+ process.stdout.write(" ok.\n");
86
+ } catch (err) {
87
+ if (err instanceof _auth0cli.Auth0AuthError) {
88
+ process.stdout.write(" token expired.\n");
89
+ console.log(" Re-authenticating (your browser will open)...");
90
+ if (!_auth0cli.login()) {
91
+ console.error("\n Auth0 login failed.");
92
+ process.exit(1);
93
+ }
94
+ }
95
+ }
96
+ const active = tenants.find((t)=>t.active) ?? tenants[0];
97
+ const issuerBaseUrl = `https://${active.name}`;
98
+ console.log(`\n ✓ Auth0 tenant: ${issuerBaseUrl}`);
99
+ process.stdout.write("\n Fetching Auth0 APIs...");
100
+ const userApis = _auth0cli.listApis().filter((a)=>!a.name.includes("Management API"));
101
+ process.stdout.write(` found ${userApis.length}.\n`);
102
+ const choices = [
103
+ {
104
+ label: `<new> https://api.${ctx.projectName}`,
105
+ existing: null
106
+ },
107
+ ...userApis.map((a)=>({
108
+ label: `${a.name} — ${a.identifier}`,
109
+ existing: a.identifier
110
+ }))
111
+ ];
112
+ const selected = await (0, _index.pick)("\n Select Auth0 API: ", choices, (c)=>c.label);
113
+ let audience;
114
+ if (!selected || selected.existing === null) {
115
+ const defaultId = `https://api.${ctx.projectName}`;
116
+ audience = await (0, _index.ask)(` API Identifier [${defaultId}]: `, defaultId);
117
+ console.log("\n Creating Auth0 API...");
118
+ audience = _auth0cli.createApi(`${ctx.projectName} API`, audience).identifier;
119
+ console.log(` ✓ API created: ${audience}`);
120
+ } else {
121
+ audience = selected.existing;
122
+ console.log(` ✓ Selected: ${audience}`);
123
+ }
124
+ return {
125
+ ...ctx,
126
+ models: ctx.models.set(_models.AUTH0_CONFIG_KEY, {
127
+ issuerBaseUrl,
128
+ audience
129
+ })
130
+ };
131
+ }
132
+ /**
133
+ * Configure phase: decorate all scaffolded controllers with auth guards.
134
+ * Adds `@Authorize`, `@AllowAnonymous`, and the `IPrincipalProvider`
135
+ * constructor param so each controller can expose the current principal.
136
+ */ async function configure(ctx) {
137
+ if (!enabled(ctx)) return ctx;
138
+ for (const controller of ctx.controllers){
139
+ const resource = controller.className.replace(/Controller$/, "");
140
+ controller.addImport("@decohere/cortex", "AllowAnonymous", "Authorize", "IPrincipalProviderToken").addTypeImport("@decohere/cortex", "IPrincipalProvider").addImport("@decohere/crucible/decorators", "inject").decorateClass(`@Authorize("read", "${resource}")`).decorateMethod("getAll", "@AllowAnonymous()").decorateMethod("remove", `@Authorize("delete", "${resource}")`).addConstructorParam({
141
+ paramDecorators: [
142
+ "@inject(IPrincipalProviderToken)"
143
+ ],
144
+ name: "principalProvider",
145
+ typeName: "IPrincipalProvider",
146
+ isPrivate: true,
147
+ isReadonly: true
148
+ });
149
+ }
150
+ return ctx;
151
+ }
152
+ /**
153
+ * Render phase: append the auth section to config/config.prod.yaml. If no
154
+ * Auth0Config was gathered during resolve (e.g. --yes), env-var placeholders
155
+ * are written instead.
156
+ */ async function render(ctx) {
157
+ const { targetDir } = ctx;
158
+ const auth0Config = ctx.models.get(_models.AUTH0_CONFIG_KEY);
159
+ // Append env-var placeholder auth block to the base config.yaml
160
+ const baseConfigPath = (0, _nodepath.join)(targetDir, "config", "config.yaml");
161
+ let baseExisting = "";
162
+ try {
163
+ baseExisting = await (0, _promises.readFile)(baseConfigPath, "utf8");
164
+ } catch {}
165
+ const baseStripped = baseExisting.replace(/^auth:[\s\S]*?(?=\n\S|\n*$)/m, "").trimEnd();
166
+ const baseFrag = (0, _prodconfigtemplate.auth0ConfigYaml)();
167
+ await (0, _promises.writeFile)(baseConfigPath, baseStripped ? `${baseStripped}\n${baseFrag}` : baseFrag);
168
+ // Append actual dev auth URLs to config.dev.yaml
169
+ const devConfigPath = (0, _nodepath.join)(targetDir, "config", "config.dev.yaml");
170
+ let devExisting = "";
171
+ try {
172
+ devExisting = await (0, _promises.readFile)(devConfigPath, "utf8");
173
+ } catch {}
174
+ const devStripped = devExisting.replace(/^auth:[\s\S]*?(?=\n\S|\n*$)/m, "").trimEnd();
175
+ const devFragment = (0, _prodconfigtemplate.auth0ConfigYaml)(auth0Config?.issuerBaseUrl, auth0Config?.audience);
176
+ await (0, _promises.writeFile)(devConfigPath, devStripped ? `${devStripped}\n\n${devFragment}` : devFragment);
177
+ return ctx;
178
+ }
179
+ const auth0Feature = {
180
+ name: "auth0",
181
+ enabled,
182
+ resolve,
183
+ configure,
184
+ render
185
+ };
186
+
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hdXRoMC9mZWF0dXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGFzaywgdHlwZSBGZWF0dXJlLCBwaWNrLCB0eXBlIFNjYWZmb2xkQ29udGV4dCB9IGZyb20gXCIuLi8uLi9kb21haW4vaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIGF1dGgwIGZyb20gXCIuL2F1dGgwLWNsaS5qc1wiO1xuaW1wb3J0IHsgQVVUSDBfQ09ORklHX0tFWSB9IGZyb20gXCIuL21vZGVscy5qc1wiO1xuaW1wb3J0IHsgYXV0aDBDb25maWdZYW1sIH0gZnJvbSBcIi4vcHJvZC1jb25maWcudGVtcGxhdGUuanNcIjtcblxuY29uc3QgZW5hYmxlZCA9IChjdHg6IFNjYWZmb2xkQ29udGV4dCkgPT4gY3R4Lm9wdHMuaWRwID09PSBcImF1dGgwXCI7XG5cbi8qKlxuICogUmVzb2x2ZSBwaGFzZTogZHJpdmUgdGhlIGF1dGgwIENMSSB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIgYW5kIGdhdGhlciBhblxuICogaXNzdWVyICsgYXVkaWVuY2UgcGFpci4gU3RvcmVkIHVuZGVyIEFVVEgwX0NPTkZJR19LRVkgZm9yIGRvd25zdHJlYW1cbiAqIGZlYXR1cmVzIChyZW5kZXIsIHBvc3RtYW4gaW50ZWdyYXRlKS5cbiAqXG4gKiBTa2lwcGVkIHVuZGVyIC0teWVzIChub24taW50ZXJhY3RpdmUpLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlKGN0eDogU2NhZmZvbGRDb250ZXh0KTogUHJvbWlzZTxTY2FmZm9sZENvbnRleHQ+IHtcblx0aWYgKGN0eC5vcHRzLnllcykgcmV0dXJuIGN0eDtcblxuXHRpZiAoIWF1dGgwLmlzSW5zdGFsbGVkKCkpIHtcblx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XCJcXG4gIFRoZSBBdXRoMCBDTEkgaXMgcmVxdWlyZWQgZm9yIGF1dG9tYXRlZCBzZXR1cC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsOiBicmV3IGluc3RhbGwgYXV0aDAvYXV0aDAtY2xpL2F1dGgwXFxuXCIgK1xuXHRcdFx0XHRcIiAgT3IgdmlzaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hdXRoMC9hdXRoMC1jbGlcXG5cIixcblx0XHQpO1xuXHRcdHByb2Nlc3MuZXhpdCgxKTtcblx0fVxuXG5cdC8vIEVuc3VyZSBib3RoIHRoZSByZWd1bGFyIGFuZCBNYW5hZ2VtZW50IEFQSSB0b2tlbnMgYXJlIHZhbGlkIGJlZm9yZSBwcm9tcHRpbmcuXG5cdHByb2Nlc3Muc3Rkb3V0LndyaXRlKFwiXFxuICBDaGVja2luZyBBdXRoMCBjcmVkZW50aWFscy4uLlwiKTtcblx0bGV0IHRlbmFudHMgPSBhdXRoMC5saXN0VGVuYW50cygpO1xuXHRpZiAodGVuYW50cy5sZW5ndGggPT09IDApIHtcblx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIiBub3QgbG9nZ2VkIGluLlxcblwiKTtcblx0XHRjb25zb2xlLmxvZyhcIiAgTG9nZ2luZyBpbiB0byBBdXRoMCAoeW91ciBicm93c2VyIHdpbGwgb3BlbikuLi5cIik7XG5cdFx0aWYgKCFhdXRoMC5sb2dpbigpKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiXFxuICBBdXRoMCBsb2dpbiBmYWlsZWQuXCIpO1xuXHRcdFx0cHJvY2Vzcy5leGl0KDEpO1xuXHRcdH1cblx0XHR0ZW5hbnRzID0gYXV0aDAubGlzdFRlbmFudHMoKTtcblx0fVxuXG5cdHRyeSB7XG5cdFx0YXV0aDAubGlzdEFwaXMoKTsgLy8gcHJvYmVzIHRoZSBNYW5hZ2VtZW50IEFQSSB0b2tlblxuXHRcdHByb2Nlc3Muc3Rkb3V0LndyaXRlKFwiIG9rLlxcblwiKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIGF1dGgwLkF1dGgwQXV0aEVycm9yKSB7XG5cdFx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIiB0b2tlbiBleHBpcmVkLlxcblwiKTtcblx0XHRcdGNvbnNvbGUubG9nKFwiICBSZS1hdXRoZW50aWNhdGluZyAoeW91ciBicm93c2VyIHdpbGwgb3BlbikuLi5cIik7XG5cdFx0XHRpZiAoIWF1dGgwLmxvZ2luKCkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIlxcbiAgQXV0aDAgbG9naW4gZmFpbGVkLlwiKTtcblx0XHRcdFx0cHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFjdGl2ZSA9IHRlbmFudHMuZmluZCgodCkgPT4gdC5hY3RpdmUpID8/IHRlbmFudHNbMF07XG5cdGNvbnN0IGlzc3VlckJhc2VVcmwgPSBgaHR0cHM6Ly8ke2FjdGl2ZS5uYW1lfWA7XG5cdGNvbnNvbGUubG9nKGBcXG4gIOKckyBBdXRoMCB0ZW5hbnQ6ICR7aXNzdWVyQmFzZVVybH1gKTtcblxuXHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIlxcbiAgRmV0Y2hpbmcgQXV0aDAgQVBJcy4uLlwiKTtcblx0Y29uc3QgdXNlckFwaXMgPSBhdXRoMC5saXN0QXBpcygpLmZpbHRlcigoYSkgPT4gIWEubmFtZS5pbmNsdWRlcyhcIk1hbmFnZW1lbnQgQVBJXCIpKTtcblx0cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCBmb3VuZCAke3VzZXJBcGlzLmxlbmd0aH0uXFxuYCk7XG5cblx0dHlwZSBBcGlDaG9pY2UgPSB7IGxhYmVsOiBzdHJpbmc7IGV4aXN0aW5nOiBzdHJpbmcgfCBudWxsIH07XG5cdGNvbnN0IGNob2ljZXM6IEFwaUNob2ljZVtdID0gW1xuXHRcdHsgbGFiZWw6IGA8bmV3PiBodHRwczovL2FwaS4ke2N0eC5wcm9qZWN0TmFtZX1gLCBleGlzdGluZzogbnVsbCB9LFxuXHRcdC4uLnVzZXJBcGlzLm1hcCgoYSkgPT4gKHsgbGFiZWw6IGAke2EubmFtZX0g4oCUICR7YS5pZGVudGlmaWVyfWAsIGV4aXN0aW5nOiBhLmlkZW50aWZpZXIgfSkpLFxuXHRdO1xuXG5cdGNvbnN0IHNlbGVjdGVkID0gYXdhaXQgcGljayhcIlxcbiAgU2VsZWN0IEF1dGgwIEFQSTogXCIsIGNob2ljZXMsIChjKSA9PiBjLmxhYmVsKTtcblxuXHRsZXQgYXVkaWVuY2U6IHN0cmluZztcblx0aWYgKCFzZWxlY3RlZCB8fCBzZWxlY3RlZC5leGlzdGluZyA9PT0gbnVsbCkge1xuXHRcdGNvbnN0IGRlZmF1bHRJZCA9IGBodHRwczovL2FwaS4ke2N0eC5wcm9qZWN0TmFtZX1gO1xuXHRcdGF1ZGllbmNlID0gYXdhaXQgYXNrKGAgIEFQSSBJZGVudGlmaWVyIFske2RlZmF1bHRJZH1dOiBgLCBkZWZhdWx0SWQpO1xuXHRcdGNvbnNvbGUubG9nKFwiXFxuICBDcmVhdGluZyBBdXRoMCBBUEkuLi5cIik7XG5cdFx0YXVkaWVuY2UgPSBhdXRoMC5jcmVhdGVBcGkoYCR7Y3R4LnByb2plY3ROYW1lfSBBUElgLCBhdWRpZW5jZSkuaWRlbnRpZmllcjtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgQVBJIGNyZWF0ZWQ6ICR7YXVkaWVuY2V9YCk7XG5cdH0gZWxzZSB7XG5cdFx0YXVkaWVuY2UgPSBzZWxlY3RlZC5leGlzdGluZztcblx0XHRjb25zb2xlLmxvZyhgICDinJMgU2VsZWN0ZWQ6ICR7YXVkaWVuY2V9YCk7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdC4uLmN0eCxcblx0XHRtb2RlbHM6IGN0eC5tb2RlbHMuc2V0KEFVVEgwX0NPTkZJR19LRVksIHsgaXNzdWVyQmFzZVVybCwgYXVkaWVuY2UgfSksXG5cdH07XG59XG5cbi8qKlxuICogQ29uZmlndXJlIHBoYXNlOiBkZWNvcmF0ZSBhbGwgc2NhZmZvbGRlZCBjb250cm9sbGVycyB3aXRoIGF1dGggZ3VhcmRzLlxuICogQWRkcyBgQEF1dGhvcml6ZWAsIGBAQWxsb3dBbm9ueW1vdXNgLCBhbmQgdGhlIGBJUHJpbmNpcGFsUHJvdmlkZXJgXG4gKiBjb25zdHJ1Y3RvciBwYXJhbSBzbyBlYWNoIGNvbnRyb2xsZXIgY2FuIGV4cG9zZSB0aGUgY3VycmVudCBwcmluY2lwYWwuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZShjdHg6IFNjYWZmb2xkQ29udGV4dCk6IFByb21pc2U8U2NhZmZvbGRDb250ZXh0PiB7XG5cdGlmICghZW5hYmxlZChjdHgpKSByZXR1cm4gY3R4O1xuXHRmb3IgKGNvbnN0IGNvbnRyb2xsZXIgb2YgY3R4LmNvbnRyb2xsZXJzKSB7XG5cdFx0Y29uc3QgcmVzb3VyY2UgPSBjb250cm9sbGVyLmNsYXNzTmFtZS5yZXBsYWNlKC9Db250cm9sbGVyJC8sIFwiXCIpO1xuXHRcdGNvbnRyb2xsZXJcblx0XHRcdC5hZGRJbXBvcnQoXCJAZGVjb2hlcmUvY29ydGV4XCIsIFwiQWxsb3dBbm9ueW1vdXNcIiwgXCJBdXRob3JpemVcIiwgXCJJUHJpbmNpcGFsUHJvdmlkZXJUb2tlblwiKVxuXHRcdFx0LmFkZFR5cGVJbXBvcnQoXCJAZGVjb2hlcmUvY29ydGV4XCIsIFwiSVByaW5jaXBhbFByb3ZpZGVyXCIpXG5cdFx0XHQuYWRkSW1wb3J0KFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIiwgXCJpbmplY3RcIilcblx0XHRcdC5kZWNvcmF0ZUNsYXNzKGBAQXV0aG9yaXplKFwicmVhZFwiLCBcIiR7cmVzb3VyY2V9XCIpYClcblx0XHRcdC5kZWNvcmF0ZU1ldGhvZChcImdldEFsbFwiLCBcIkBBbGxvd0Fub255bW91cygpXCIpXG5cdFx0XHQuZGVjb3JhdGVNZXRob2QoXCJyZW1vdmVcIiwgYEBBdXRob3JpemUoXCJkZWxldGVcIiwgXCIke3Jlc291cmNlfVwiKWApXG5cdFx0XHQuYWRkQ29uc3RydWN0b3JQYXJhbSh7XG5cdFx0XHRcdHBhcmFtRGVjb3JhdG9yczogW1wiQGluamVjdChJUHJpbmNpcGFsUHJvdmlkZXJUb2tlbilcIl0sXG5cdFx0XHRcdG5hbWU6IFwicHJpbmNpcGFsUHJvdmlkZXJcIixcblx0XHRcdFx0dHlwZU5hbWU6IFwiSVByaW5jaXBhbFByb3ZpZGVyXCIsXG5cdFx0XHRcdGlzUHJpdmF0ZTogdHJ1ZSxcblx0XHRcdFx0aXNSZWFkb25seTogdHJ1ZSxcblx0XHRcdH0pO1xuXHR9XG5cdHJldHVybiBjdHg7XG59XG5cbi8qKlxuICogUmVuZGVyIHBoYXNlOiBhcHBlbmQgdGhlIGF1dGggc2VjdGlvbiB0byBjb25maWcvY29uZmlnLnByb2QueWFtbC4gSWYgbm9cbiAqIEF1dGgwQ29uZmlnIHdhcyBnYXRoZXJlZCBkdXJpbmcgcmVzb2x2ZSAoZS5nLiAtLXllcyksIGVudi12YXIgcGxhY2Vob2xkZXJzXG4gKiBhcmUgd3JpdHRlbiBpbnN0ZWFkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXIoY3R4OiBTY2FmZm9sZENvbnRleHQpOiBQcm9taXNlPFNjYWZmb2xkQ29udGV4dD4ge1xuXHRjb25zdCB7IHRhcmdldERpciB9ID0gY3R4O1xuXHRjb25zdCBhdXRoMENvbmZpZyA9IGN0eC5tb2RlbHMuZ2V0KEFVVEgwX0NPTkZJR19LRVkpO1xuXG5cdC8vIEFwcGVuZCBlbnYtdmFyIHBsYWNlaG9sZGVyIGF1dGggYmxvY2sgdG8gdGhlIGJhc2UgY29uZmlnLnlhbWxcblx0Y29uc3QgYmFzZUNvbmZpZ1BhdGggPSBqb2luKHRhcmdldERpciwgXCJjb25maWdcIiwgXCJjb25maWcueWFtbFwiKTtcblx0bGV0IGJhc2VFeGlzdGluZyA9IFwiXCI7XG5cdHRyeSB7XG5cdFx0YmFzZUV4aXN0aW5nID0gYXdhaXQgcmVhZEZpbGUoYmFzZUNvbmZpZ1BhdGgsIFwidXRmOFwiKTtcblx0fSBjYXRjaCB7fVxuXHRjb25zdCBiYXNlU3RyaXBwZWQgPSBiYXNlRXhpc3RpbmcucmVwbGFjZSgvXmF1dGg6W1xcc1xcU10qPyg/PVxcblxcU3xcXG4qJCkvbSwgXCJcIikudHJpbUVuZCgpO1xuXHRjb25zdCBiYXNlRnJhZyA9IGF1dGgwQ29uZmlnWWFtbCgpO1xuXHRhd2FpdCB3cml0ZUZpbGUoYmFzZUNvbmZpZ1BhdGgsIGJhc2VTdHJpcHBlZCA/IGAke2Jhc2VTdHJpcHBlZH1cXG4ke2Jhc2VGcmFnfWAgOiBiYXNlRnJhZyk7XG5cblx0Ly8gQXBwZW5kIGFjdHVhbCBkZXYgYXV0aCBVUkxzIHRvIGNvbmZpZy5kZXYueWFtbFxuXHRjb25zdCBkZXZDb25maWdQYXRoID0gam9pbih0YXJnZXREaXIsIFwiY29uZmlnXCIsIFwiY29uZmlnLmRldi55YW1sXCIpO1xuXHRsZXQgZGV2RXhpc3RpbmcgPSBcIlwiO1xuXHR0cnkge1xuXHRcdGRldkV4aXN0aW5nID0gYXdhaXQgcmVhZEZpbGUoZGV2Q29uZmlnUGF0aCwgXCJ1dGY4XCIpO1xuXHR9IGNhdGNoIHt9XG5cdGNvbnN0IGRldlN0cmlwcGVkID0gZGV2RXhpc3RpbmcucmVwbGFjZSgvXmF1dGg6W1xcc1xcU10qPyg/PVxcblxcU3xcXG4qJCkvbSwgXCJcIikudHJpbUVuZCgpO1xuXHRjb25zdCBkZXZGcmFnbWVudCA9IGF1dGgwQ29uZmlnWWFtbChhdXRoMENvbmZpZz8uaXNzdWVyQmFzZVVybCwgYXV0aDBDb25maWc/LmF1ZGllbmNlKTtcblx0YXdhaXQgd3JpdGVGaWxlKFxuXHRcdGRldkNvbmZpZ1BhdGgsXG5cdFx0ZGV2U3RyaXBwZWQgPyBgJHtkZXZTdHJpcHBlZH1cXG5cXG4ke2RldkZyYWdtZW50fWAgOiBkZXZGcmFnbWVudCxcblx0KTtcblxuXHRyZXR1cm4gY3R4O1xufVxuXG5leHBvcnQgY29uc3QgYXV0aDBGZWF0dXJlOiBGZWF0dXJlID0ge1xuXHRuYW1lOiBcImF1dGgwXCIsXG5cdGVuYWJsZWQsXG5cdHJlc29sdmUsXG5cdGNvbmZpZ3VyZSxcblx0cmVuZGVyLFxufTtcbiJdLCJuYW1lcyI6WyJhdXRoMEZlYXR1cmUiLCJlbmFibGVkIiwiY3R4Iiwib3B0cyIsImlkcCIsInJlc29sdmUiLCJ5ZXMiLCJhdXRoMCIsImlzSW5zdGFsbGVkIiwiY29uc29sZSIsImVycm9yIiwicHJvY2VzcyIsImV4aXQiLCJzdGRvdXQiLCJ3cml0ZSIsInRlbmFudHMiLCJsaXN0VGVuYW50cyIsImxlbmd0aCIsImxvZyIsImxvZ2luIiwibGlzdEFwaXMiLCJlcnIiLCJBdXRoMEF1dGhFcnJvciIsImFjdGl2ZSIsImZpbmQiLCJ0IiwiaXNzdWVyQmFzZVVybCIsIm5hbWUiLCJ1c2VyQXBpcyIsImZpbHRlciIsImEiLCJpbmNsdWRlcyIsImNob2ljZXMiLCJsYWJlbCIsInByb2plY3ROYW1lIiwiZXhpc3RpbmciLCJtYXAiLCJpZGVudGlmaWVyIiwic2VsZWN0ZWQiLCJwaWNrIiwiYyIsImF1ZGllbmNlIiwiZGVmYXVsdElkIiwiYXNrIiwiY3JlYXRlQXBpIiwibW9kZWxzIiwic2V0IiwiQVVUSDBfQ09ORklHX0tFWSIsImNvbmZpZ3VyZSIsImNvbnRyb2xsZXIiLCJjb250cm9sbGVycyIsInJlc291cmNlIiwiY2xhc3NOYW1lIiwicmVwbGFjZSIsImFkZEltcG9ydCIsImFkZFR5cGVJbXBvcnQiLCJkZWNvcmF0ZUNsYXNzIiwiZGVjb3JhdGVNZXRob2QiLCJhZGRDb25zdHJ1Y3RvclBhcmFtIiwicGFyYW1EZWNvcmF0b3JzIiwidHlwZU5hbWUiLCJpc1ByaXZhdGUiLCJpc1JlYWRvbmx5IiwicmVuZGVyIiwidGFyZ2V0RGlyIiwiYXV0aDBDb25maWciLCJnZXQiLCJiYXNlQ29uZmlnUGF0aCIsImpvaW4iLCJiYXNlRXhpc3RpbmciLCJyZWFkRmlsZSIsImJhc2VTdHJpcHBlZCIsInRyaW1FbmQiLCJiYXNlRnJhZyIsImF1dGgwQ29uZmlnWWFtbCIsIndyaXRlRmlsZSIsImRldkNvbmZpZ1BhdGgiLCJkZXZFeGlzdGluZyIsImRldlN0cmlwcGVkIiwiZGV2RnJhZ21lbnQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBdUphQTs7O2VBQUFBOzs7MEJBdkp1QjswQkFDZjt1QkFDeUM7a0VBQ3ZDO3dCQUNVO29DQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEMsTUFBTUMsVUFBVSxDQUFDQyxNQUF5QkEs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
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "AUTH0_CONFIG_KEY", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return AUTH0_CONFIG_KEY;
9
+ }
10
+ });
11
+ const _index = require("../../domain/index.js");
12
+ const AUTH0_CONFIG_KEY = (0, _index.modelKey)("auth0-config");
13
+
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS92MS9mZWF0dXJlcy9hdXRoMC9tb2RlbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kZWxLZXkgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aDBDb25maWcge1xuXHRpc3N1ZXJCYXNlVXJsOiBzdHJpbmc7XG5cdGF1ZGllbmNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBBVVRIMF9DT05GSUdfS0VZID0gbW9kZWxLZXk8QXV0aDBDb25maWc+KFwiYXV0aDAtY29uZmlnXCIpO1xuIl0sIm5hbWVzIjpbIkFVVEgwX0NPTkZJR19LRVkiLCJtb2RlbEtleSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFPYUE7OztlQUFBQTs7O3VCQVBZO0FBT2xCLE1BQU1BLG1CQUFtQkMsSUFBQUEsZUFBUSxFQUFjIn0=