@decohere/create 0.0.1-dev.24 → 0.0.1-dev.26

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 (33) hide show
  1. package/commonjs/src/cli.js +54 -2
  2. package/commonjs/src/domain/prompt.js +12 -3
  3. package/commonjs/src/models/docker-image.model.js +11 -2
  4. package/commonjs/src/models/gitignore.model.js +1 -2
  5. package/commonjs/src/models/project.model.js +8 -3
  6. package/commonjs/src/runner.js +43 -10
  7. package/commonjs/src/webapi/create-api.js +16 -13
  8. package/commonjs/src/webapi/features/auth.feature.js +5 -4
  9. package/commonjs/src/webapi/features/auth0-cli.js +135 -19
  10. package/commonjs/src/webapi/features/biome-format.js +47 -0
  11. package/commonjs/src/webapi/features/finalize.feature.js +6 -1
  12. package/commonjs/src/webapi/features/postman.feature.js +5 -5
  13. package/commonjs/src/webapi/models/controller-source-file.model.js +2 -2
  14. package/es6/src/cli.js +13 -2
  15. package/es6/src/domain/prompt.js +9 -3
  16. package/es6/src/models/docker-image.model.js +11 -2
  17. package/es6/src/models/gitignore.model.js +1 -2
  18. package/es6/src/models/project.model.js +8 -3
  19. package/es6/src/runner.js +46 -13
  20. package/es6/src/webapi/create-api.js +17 -14
  21. package/es6/src/webapi/features/auth.feature.js +5 -4
  22. package/es6/src/webapi/features/auth0-cli.js +128 -20
  23. package/es6/src/webapi/features/biome-format.js +40 -0
  24. package/es6/src/webapi/features/finalize.feature.js +7 -2
  25. package/es6/src/webapi/features/postman.feature.js +5 -5
  26. package/es6/src/webapi/models/controller-source-file.model.js +2 -2
  27. package/package.json +2 -2
  28. package/types/src/domain/prompt.d.ts +2 -0
  29. package/types/src/models/project.model.d.ts +3 -1
  30. package/types/src/runner.d.ts +2 -2
  31. package/types/src/webapi/create-api.d.ts +2 -0
  32. package/types/src/webapi/features/auth0-cli.d.ts +26 -1
  33. package/types/src/webapi/features/biome-format.d.ts +5 -0
@@ -104,7 +104,7 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
104
104
  ],
105
105
  [
106
106
  "create",
107
- new ControllerMethod("create", '@Post("/")', "body: HelloBody", false, [
107
+ new ControllerMethod("create", "@Post()", "body: HelloBody", false, [
108
108
  "return { message: body.message };"
109
109
  ])
110
110
  ],
@@ -176,4 +176,4 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
176
176
  }
177
177
  }
178
178
 
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9jb250cm9sbGVyLXNvdXJjZS1maWxlLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKiBUcmFja3MgbmFtZWQgaW1wb3J0cyBmcm9tIGEgc2luZ2xlIG1vZHVsZSBwYXRoLCBzcGxpdCBpbnRvIHZhbHVlcyBhbmQgdHlwZXMuICovXG5jbGFzcyBJbXBvcnRHcm91cCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfdHlwZXM6IHN0cmluZ1tdID0gW107XG5cblx0cHVibGljIGFkZChuYW1lOiBzdHJpbmcsIHR5cGVPbmx5ID0gZmFsc2UpOiB0aGlzIHtcblx0XHRpZiAodHlwZU9ubHkpIHtcblx0XHRcdC8vIFZhbHVlIGltcG9ydCBhbHJlYWR5IHByZXNlbnQg4oCUIHZhbHVlIHdpbnMsIHNraXBcblx0XHRcdGlmICghdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpICYmICF0aGlzLl90eXBlcy5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0XHR0aGlzLl90eXBlcy5wdXNoKG5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBQcm9tb3RlOiByZW1vdmUgZnJvbSB0eXBlcyBpZiBpdCB3YXMgcHJldmlvdXNseSB0eXBlLW9ubHlcblx0XHRcdGNvbnN0IHR5cGVJZHggPSB0aGlzLl90eXBlcy5pbmRleE9mKG5hbWUpO1xuXHRcdFx0aWYgKHR5cGVJZHggIT09IC0xKSB0aGlzLl90eXBlcy5zcGxpY2UodHlwZUlkeCwgMSk7XG5cdFx0XHRpZiAoIXRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKSkgdGhpcy5fdmFsdWVzLnB1c2gobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcihmcm9tOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHZhbHVlcyA9IFsuLi50aGlzLl92YWx1ZXNdLnNvcnQoKTtcblx0XHRjb25zdCB0eXBlcyA9IFsuLi50aGlzLl90eXBlc10uc29ydCgpLm1hcCgobikgPT4gYHR5cGUgJHtufWApO1xuXHRcdHJldHVybiBgaW1wb3J0IHsgJHtbLi4udmFsdWVzLCAuLi50eXBlc10uam9pbihcIiwgXCIpfSB9IGZyb20gXCIke2Zyb219XCI7YDtcblx0fVxufVxuXG4vKipcbiAqIEEgY29udHJvbGxlciBtZXRob2QuIEZlYXR1cmVzIGNhbGwgYGFkZERlY29yYXRvcigpYCB0byBwcmVwZW5kIGRlY29yYXRvcnNcbiAqIGJlZm9yZSB0aGUgSFRUUCB2ZXJiIGRlY29yYXRvciAoZS5nLiBgQEFsbG93QW5vbnltb3VzYCBiZWZvcmUgYEBHZXQoKWApLlxuICovXG5leHBvcnQgY2xhc3MgQ29udHJvbGxlck1ldGhvZCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dHJhRGVjb3JhdG9yczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSBfYm9keTogc3RyaW5nW107XG5cdHByaXZhdGUgX2lzQXN5bmM6IGJvb2xlYW47XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfaHR0cERlY29yYXRvcjogc3RyaW5nLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtczogc3RyaW5nLFxuXHRcdGlzQXN5bmM6IGJvb2xlYW4sXG5cdFx0Ym9keTogc3RyaW5nW10sXG5cdCkge1xuXHRcdHRoaXMuX2lzQXN5bmMgPSBpc0FzeW5jO1xuXHRcdHRoaXMuX2JvZHkgPSBib2R5O1xuXHR9XG5cblx0cHVibGljIGFkZERlY29yYXRvcihkZWNvcmF0b3I6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2V4dHJhRGVjb3JhdG9ycy5wdXNoKGRlY29yYXRvcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogUmVwbGFjZSB0aGUgbWV0aG9kIGJvZHkgbGluZXMgKHVzZWQgYnkgZmVhdHVyZXMgdGhhdCBleHRlbmQgZ2VuZXJhdGVkIGJlaGF2aW91cikuICovXG5cdHB1YmxpYyBzZXRCb2R5KGJvZHk6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5fYm9keSA9IGJvZHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0QXN5bmMoaXNBc3luYyA9IHRydWUpOiB0aGlzIHtcblx0XHR0aGlzLl9pc0FzeW5jID0gaXNBc3luYztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZW5kZXIoKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgZCBvZiB0aGlzLl9leHRyYURlY29yYXRvcnMpIHtcblx0XHRcdGxpbmVzLnB1c2goYFxcdCR7ZH1gKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChgXFx0JHt0aGlzLl9odHRwRGVjb3JhdG9yfWApO1xuXHRcdGNvbnN0IGFzeW5jS3cgPSB0aGlzLl9pc0FzeW5jID8gXCJhc3luYyBcIiA6IFwiXCI7XG5cdFx0bGluZXMucHVzaChgXFx0cHVibGljICR7YXN5bmNLd30ke3RoaXMubmFtZX0oJHt0aGlzLl9wYXJhbXN9KSB7YCk7XG5cdFx0Zm9yIChjb25zdCBsaW5lIG9mIHRoaXMuX2JvZHkpIHtcblx0XHRcdGxpbmVzLnB1c2goYFxcdFxcdCR7bGluZX1gKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChcIlxcdH1cIik7XG5cdFx0cmV0dXJuIGxpbmVzO1xuXHR9XG59XG5cbi8qKlxuICogTW9kZWwgZm9yIGBwcm9qZWN0cy9hcGkvc3JjL2NvbnRyb2xsZXJzL2hlbGxvLmNvbnRyb2xsZXIudHNgLlxuICpcbiAqIFByZS1pbml0aWFsaXNlZCB3aXRoIGFsbCByb3V0ZXMgYW5kIHRoZWlyIEhUVFAgZGVjb3JhdG9ycy4gRmVhdHVyZXMgbXV0YXRlXG4gKiB0aGUgbW9kZWwgdmlhIGBnZXRNZXRob2QobmFtZSkuYWRkRGVjb3JhdG9yKC4uLilgLCBgYWRkRGVjb3JhdG9yKC4uLilgIChjbGFzc1xuICogbGV2ZWwpLCBgYWRkQ29ydGV4SW1wb3J0KC4uLilgLCBgYWRkSW1wb3J0KC4uLilgLCBhbmQgYGFkZENvbnN0cnVjdG9yUGFyYW0oLi4uKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cm9sbGVyU291cmNlRmlsZSBpbXBsZW1lbnRzIEtleWVkTW9kZWwge1xuXHRwdWJsaWMgcmVhZG9ubHkga2V5ID0gV0VMTF9LTk9XTl9GSUxFUy5DT05UUk9MTEVSX1RTO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvcnRleEltcG9ydHMgPSBuZXcgSW1wb3J0R3JvdXAoKVxuXHRcdC5hZGQoXCJDb250cm9sbGVyXCIpXG5cdFx0LmFkZChcIkRlbGV0ZVwiKVxuXHRcdC5hZGQoXCJGaWVsZFwiKVxuXHRcdC5hZGQoXCJHZXRcIilcblx0XHQuYWRkKFwiUGFyYW1cIilcblx0XHQuYWRkKFwiUG9zdFwiKVxuXHRcdC5hZGQoXCJQdXRcIilcblx0XHQuYWRkKFwiUXVlcnlcIik7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfZXh0cmFJbXBvcnRHcm91cHMgPSBuZXcgTWFwPHN0cmluZywgSW1wb3J0R3JvdXA+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2NsYXNzRGVjb3JhdG9yczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfY3RvclBhcmFtczogc3RyaW5nW10gPSBbXCJwcml2YXRlIHJlYWRvbmx5IHNhbXBsZTogU2FtcGxlU2VydmljZVwiXTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9tZXRob2RzID0gbmV3IE1hcDxzdHJpbmcsIENvbnRyb2xsZXJNZXRob2Q+KFtcblx0XHRbXG5cdFx0XHRcImdldEFsbFwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXCJnZXRBbGxcIiwgXCJAR2V0KClcIiwgJ0BRdWVyeShcImZpbHRlclwiKSBmaWx0ZXI6IHN0cmluZycsIHRydWUsIFtcblx0XHRcdFx0XCJjb25zdCBncmVldGluZyA9IGF3YWl0IHRoaXMuc2FtcGxlLmdldEdyZWV0aW5nKCk7XCIsXG5cdFx0XHRcdFwicmV0dXJuIHsgZmlsdGVyLCBtZXNzYWdlOiBncmVldGluZyB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XHRbXG5cdFx0XHRcImdldE9uZVwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXG5cdFx0XHRcdFwiZ2V0T25lXCIsXG5cdFx0XHRcdCdAR2V0KFwiLzppZFwiKScsXG5cdFx0XHRcdCdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IHRlbXBsYXRlIGxpdGVyYWwgaW4gZ2VuZXJhdGVkIGNvZGVcblx0XHRcdFx0W1wicmV0dXJuIHsgaWQsIG1lc3NhZ2U6IGBIZWxsbyAke2lkfSFgIH07XCJdLFxuXHRcdFx0KSxcblx0XHRdLFxuXHRcdFtcblx0XHRcdFwiY3JlYXRlXCIsXG5cdFx0XHRuZXcgQ29udHJvbGxlck1ldGhvZChcImNyZWF0ZVwiLCAnQFBvc3QoXCIvXCIpJywgXCJib2R5OiBIZWxsb0JvZHlcIiwgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIixcblx0XHRcdF0pLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJ1cGRhdGVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFxuXHRcdFx0XHRcInVwZGF0ZVwiLFxuXHRcdFx0XHQnQFB1dChcIi86aWRcIiknLFxuXHRcdFx0XHQnQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZywgYm9keTogSGVsbG9Cb2R5Jyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFtcInJldHVybiB7IGlkLCBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIl0sXG5cdFx0XHQpLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJyZW1vdmVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFwicmVtb3ZlXCIsICdARGVsZXRlKFwiLzppZFwiKScsICdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJywgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBpZCwgZGVsZXRlZDogdHJ1ZSB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XSk7XG5cblx0LyoqIFJldHJpZXZlIGEgbWV0aG9kIGJ5IG5hbWUgdG8gbXV0YXRlIGl0cyBkZWNvcmF0b3JzLiAqL1xuXHRwdWJsaWMgZ2V0TWV0aG9kKG5hbWU6IHN0cmluZyk6IENvbnRyb2xsZXJNZXRob2Qge1xuXHRcdGNvbnN0IG0gPSB0aGlzLl9tZXRob2RzLmdldChuYW1lKTtcblx0XHRpZiAobSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoYE5vIG1ldGhvZCAnJHtuYW1lfScgb24gQ29udHJvbGxlclNvdXJjZUZpbGVgKTtcblx0XHRyZXR1cm4gbTtcblx0fVxuXG5cdC8qKiBBZGQgYSBjbGFzcy1sZXZlbCBkZWNvcmF0b3IgKGUuZy4gYEBBdXRob3JpemVgKS4gKi9cblx0cHVibGljIGFkZERlY29yYXRvcihkZWNvcmF0b3I6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2NsYXNzRGVjb3JhdG9ycy5wdXNoKGRlY29yYXRvcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogQWRkIGEgbmFtZWQgaW1wb3J0IGZyb20gYEBkZWNvaGVyZS9jb3J0ZXhgLiAqL1xuXHRwdWJsaWMgYWRkQ29ydGV4SW1wb3J0KG5hbWU6IHN0cmluZywgdHlwZU9ubHkgPSBmYWxzZSk6IHRoaXMge1xuXHRcdHRoaXMuX2NvcnRleEltcG9ydHMuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGQgYSBuYW1lZCBpbXBvcnQgZnJvbSBhbnkgb3RoZXIgbW9kdWxlLiAqL1xuXHRwdWJsaWMgYWRkSW1wb3J0KG5hbWU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5nZXQoZnJvbSkgPz8gbmV3IEltcG9ydEdyb3VwKCk7XG5cdFx0Z3JvdXAuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHR0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5zZXQoZnJvbSwgZ3JvdXApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZCBhIGNvbnN0cnVjdG9yIHBhcmFtZXRlciAoZS5nLiBhbiBpbmplY3RlZCBkZXBlbmRlbmN5KS4gKi9cblx0cHVibGljIGFkZENvbnN0cnVjdG9yUGFyYW0ocGFyYW06IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2N0b3JQYXJhbXMucHVzaChwYXJhbSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG5cdFx0XHR0aGlzLl9jb3J0ZXhJbXBvcnRzLnJlbmRlcihcIkBkZWNvaGVyZS9jb3J0ZXhcIiksXG5cdFx0XHQnaW1wb3J0IHsgU2FtcGxlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9zYW1wbGUuc2VydmljZS5qc1wiOycsXG5cdFx0XTtcblxuXHRcdGZvciAoY29uc3QgW2Zyb20sIGdyb3VwXSBvZiB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcykge1xuXHRcdFx0bGluZXMucHVzaChncm91cC5yZW5kZXIoZnJvbSkpO1xuXHRcdH1cblxuXHRcdGxpbmVzLnB1c2goXG5cdFx0XHRcIlwiLFxuXHRcdFx0XCJjbGFzcyBIZWxsb0JvZHkge1wiLFxuXHRcdFx0J1xcdEBGaWVsZChcImJvZHlcIiwgXCJtZXNzYWdlXCIpJyxcblx0XHRcdFwiXFx0cHVibGljIG1lc3NhZ2UhOiBzdHJpbmc7XCIsXG5cdFx0XHRcIn1cIixcblx0XHRcdFwiXCIsXG5cdFx0KTtcblxuXHRcdGZvciAoY29uc3QgZCBvZiB0aGlzLl9jbGFzc0RlY29yYXRvcnMpIHtcblx0XHRcdGxpbmVzLnB1c2goZCk7XG5cdFx0fVxuXHRcdGxpbmVzLnB1c2goJ0BDb250cm9sbGVyKHsgcHJlZml4OiBcIi9oZWxsb1wiIH0pJywgXCJleHBvcnQgY2xhc3MgSGVsbG9Db250cm9sbGVyIHtcIiwgXCJcIik7XG5cblx0XHRsaW5lcy5wdXNoKFwiXFx0cHVibGljIGNvbnN0cnVjdG9yKFwiKTtcblx0XHRmb3IgKGNvbnN0IHAgb2YgdGhpcy5fY3RvclBhcmFtcykge1xuXHRcdFx0bGluZXMucHVzaChgXFx0XFx0JHtwfSxgKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChcIlxcdCkge31cIik7XG5cdFx0bGluZXMucHVzaChcIlwiKTtcblxuXHRcdGZvciAoY29uc3QgbWV0aG9kIG9mIHRoaXMuX21ldGhvZHMudmFsdWVzKCkpIHtcblx0XHRcdGxpbmVzLnB1c2goLi4ubWV0aG9kLnJlbmRlcigpLCBcIlwiKTtcblx0XHR9XG5cblx0XHRsaW5lcy5wdXNoKFwifVwiLCBcIlwiKTtcblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInNyYy9jb250cm9sbGVycy9oZWxsby5jb250cm9sbGVyLnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IGxpbmVzLmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiSW1wb3J0R3JvdXAiLCJfdmFsdWVzIiwiX3R5cGVzIiwiYWRkIiwibmFtZSIsInR5cGVPbmx5IiwiaW5jbHVkZXMiLCJwdXNoIiwidHlwZUlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJyZW5kZXIiLCJmcm9tIiwidmFsdWVzIiwic29ydCIsInR5cGVzIiwibWFwIiwibiIsImpvaW4iLCJDb250cm9sbGVyTWV0aG9kIiwiX2V4dHJhRGVjb3JhdG9ycyIsIl9ib2R5IiwiX2lzQXN5bmMiLCJfaHR0cERlY29yYXRvciIsIl9wYXJhbXMiLCJpc0FzeW5jIiwiYm9keSIsImFkZERlY29yYXRvciIsImRlY29yYXRvciIsInNldEJvZHkiLCJzZXRBc3luYyIsImxpbmVzIiwiZCIsImFzeW5jS3ciLCJsaW5lIiwiQ29udHJvbGxlclNvdXJjZUZpbGUiLCJrZXkiLCJDT05UUk9MTEVSX1RTIiwiX2NvcnRleEltcG9ydHMiLCJfZXh0cmFJbXBvcnRHcm91cHMiLCJNYXAiLCJfY2xhc3NEZWNvcmF0b3JzIiwiX2N0b3JQYXJhbXMiLCJfbWV0aG9kcyIsImdldE1ldGhvZCIsIm0iLCJnZXQiLCJFcnJvciIsImFkZENvcnRleEltcG9ydCIsImFkZEltcG9ydCIsImdyb3VwIiwic2V0IiwiYWRkQ29uc3RydWN0b3JQYXJhbSIsInBhcmFtIiwiZmlsZXMiLCJwIiwibWV0aG9kIiwiZmlsZVBhdGgiLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFHekQsaUZBQWlGLEdBQ2pGLE1BQU1DO0lBQ1lDLFVBQW9CLEVBQUUsQ0FBQztJQUN2QkMsU0FBbUIsRUFBRSxDQUFDO0lBRWhDQyxJQUFJQyxJQUFZLEVBQUVDLFdBQVcsS0FBSyxFQUFRO1FBQ2hELElBQUlBLFVBQVU7WUFDYixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxRQUFRLENBQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDRixPQUFPO2dCQUNoRSxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDSDtZQUNsQjtRQUNELE9B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
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL21vZGVscy9jb250cm9sbGVyLXNvdXJjZS1maWxlLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKiBUcmFja3MgbmFtZWQgaW1wb3J0cyBmcm9tIGEgc2luZ2xlIG1vZHVsZSBwYXRoLCBzcGxpdCBpbnRvIHZhbHVlcyBhbmQgdHlwZXMuICovXG5jbGFzcyBJbXBvcnRHcm91cCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfdHlwZXM6IHN0cmluZ1tdID0gW107XG5cblx0cHVibGljIGFkZChuYW1lOiBzdHJpbmcsIHR5cGVPbmx5ID0gZmFsc2UpOiB0aGlzIHtcblx0XHRpZiAodHlwZU9ubHkpIHtcblx0XHRcdC8vIFZhbHVlIGltcG9ydCBhbHJlYWR5IHByZXNlbnQg4oCUIHZhbHVlIHdpbnMsIHNraXBcblx0XHRcdGlmICghdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpICYmICF0aGlzLl90eXBlcy5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0XHR0aGlzLl90eXBlcy5wdXNoKG5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBQcm9tb3RlOiByZW1vdmUgZnJvbSB0eXBlcyBpZiBpdCB3YXMgcHJldmlvdXNseSB0eXBlLW9ubHlcblx0XHRcdGNvbnN0IHR5cGVJZHggPSB0aGlzLl90eXBlcy5pbmRleE9mKG5hbWUpO1xuXHRcdFx0aWYgKHR5cGVJZHggIT09IC0xKSB0aGlzLl90eXBlcy5zcGxpY2UodHlwZUlkeCwgMSk7XG5cdFx0XHRpZiAoIXRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKSkgdGhpcy5fdmFsdWVzLnB1c2gobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcihmcm9tOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHZhbHVlcyA9IFsuLi50aGlzLl92YWx1ZXNdLnNvcnQoKTtcblx0XHRjb25zdCB0eXBlcyA9IFsuLi50aGlzLl90eXBlc10uc29ydCgpLm1hcCgobikgPT4gYHR5cGUgJHtufWApO1xuXHRcdHJldHVybiBgaW1wb3J0IHsgJHtbLi4udmFsdWVzLCAuLi50eXBlc10uam9pbihcIiwgXCIpfSB9IGZyb20gXCIke2Zyb219XCI7YDtcblx0fVxufVxuXG4vKipcbiAqIEEgY29udHJvbGxlciBtZXRob2QuIEZlYXR1cmVzIGNhbGwgYGFkZERlY29yYXRvcigpYCB0byBwcmVwZW5kIGRlY29yYXRvcnNcbiAqIGJlZm9yZSB0aGUgSFRUUCB2ZXJiIGRlY29yYXRvciAoZS5nLiBgQEFsbG93QW5vbnltb3VzYCBiZWZvcmUgYEBHZXQoKWApLlxuICovXG5leHBvcnQgY2xhc3MgQ29udHJvbGxlck1ldGhvZCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dHJhRGVjb3JhdG9yczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSBfYm9keTogc3RyaW5nW107XG5cdHByaXZhdGUgX2lzQXN5bmM6IGJvb2xlYW47XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfaHR0cERlY29yYXRvcjogc3RyaW5nLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtczogc3RyaW5nLFxuXHRcdGlzQXN5bmM6IGJvb2xlYW4sXG5cdFx0Ym9keTogc3RyaW5nW10sXG5cdCkge1xuXHRcdHRoaXMuX2lzQXN5bmMgPSBpc0FzeW5jO1xuXHRcdHRoaXMuX2JvZHkgPSBib2R5O1xuXHR9XG5cblx0cHVibGljIGFkZERlY29yYXRvcihkZWNvcmF0b3I6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2V4dHJhRGVjb3JhdG9ycy5wdXNoKGRlY29yYXRvcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogUmVwbGFjZSB0aGUgbWV0aG9kIGJvZHkgbGluZXMgKHVzZWQgYnkgZmVhdHVyZXMgdGhhdCBleHRlbmQgZ2VuZXJhdGVkIGJlaGF2aW91cikuICovXG5cdHB1YmxpYyBzZXRCb2R5KGJvZHk6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5fYm9keSA9IGJvZHk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0QXN5bmMoaXNBc3luYyA9IHRydWUpOiB0aGlzIHtcblx0XHR0aGlzLl9pc0FzeW5jID0gaXNBc3luYztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZW5kZXIoKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgZCBvZiB0aGlzLl9leHRyYURlY29yYXRvcnMpIHtcblx0XHRcdGxpbmVzLnB1c2goYFxcdCR7ZH1gKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChgXFx0JHt0aGlzLl9odHRwRGVjb3JhdG9yfWApO1xuXHRcdGNvbnN0IGFzeW5jS3cgPSB0aGlzLl9pc0FzeW5jID8gXCJhc3luYyBcIiA6IFwiXCI7XG5cdFx0bGluZXMucHVzaChgXFx0cHVibGljICR7YXN5bmNLd30ke3RoaXMubmFtZX0oJHt0aGlzLl9wYXJhbXN9KSB7YCk7XG5cdFx0Zm9yIChjb25zdCBsaW5lIG9mIHRoaXMuX2JvZHkpIHtcblx0XHRcdGxpbmVzLnB1c2goYFxcdFxcdCR7bGluZX1gKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChcIlxcdH1cIik7XG5cdFx0cmV0dXJuIGxpbmVzO1xuXHR9XG59XG5cbi8qKlxuICogTW9kZWwgZm9yIGBwcm9qZWN0cy9hcGkvc3JjL2NvbnRyb2xsZXJzL2hlbGxvLmNvbnRyb2xsZXIudHNgLlxuICpcbiAqIFByZS1pbml0aWFsaXNlZCB3aXRoIGFsbCByb3V0ZXMgYW5kIHRoZWlyIEhUVFAgZGVjb3JhdG9ycy4gRmVhdHVyZXMgbXV0YXRlXG4gKiB0aGUgbW9kZWwgdmlhIGBnZXRNZXRob2QobmFtZSkuYWRkRGVjb3JhdG9yKC4uLilgLCBgYWRkRGVjb3JhdG9yKC4uLilgIChjbGFzc1xuICogbGV2ZWwpLCBgYWRkQ29ydGV4SW1wb3J0KC4uLilgLCBgYWRkSW1wb3J0KC4uLilgLCBhbmQgYGFkZENvbnN0cnVjdG9yUGFyYW0oLi4uKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cm9sbGVyU291cmNlRmlsZSBpbXBsZW1lbnRzIEtleWVkTW9kZWwge1xuXHRwdWJsaWMgcmVhZG9ubHkga2V5ID0gV0VMTF9LTk9XTl9GSUxFUy5DT05UUk9MTEVSX1RTO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvcnRleEltcG9ydHMgPSBuZXcgSW1wb3J0R3JvdXAoKVxuXHRcdC5hZGQoXCJDb250cm9sbGVyXCIpXG5cdFx0LmFkZChcIkRlbGV0ZVwiKVxuXHRcdC5hZGQoXCJGaWVsZFwiKVxuXHRcdC5hZGQoXCJHZXRcIilcblx0XHQuYWRkKFwiUGFyYW1cIilcblx0XHQuYWRkKFwiUG9zdFwiKVxuXHRcdC5hZGQoXCJQdXRcIilcblx0XHQuYWRkKFwiUXVlcnlcIik7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfZXh0cmFJbXBvcnRHcm91cHMgPSBuZXcgTWFwPHN0cmluZywgSW1wb3J0R3JvdXA+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2NsYXNzRGVjb3JhdG9yczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfY3RvclBhcmFtczogc3RyaW5nW10gPSBbXCJwcml2YXRlIHJlYWRvbmx5IHNhbXBsZTogU2FtcGxlU2VydmljZVwiXTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9tZXRob2RzID0gbmV3IE1hcDxzdHJpbmcsIENvbnRyb2xsZXJNZXRob2Q+KFtcblx0XHRbXG5cdFx0XHRcImdldEFsbFwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXCJnZXRBbGxcIiwgXCJAR2V0KClcIiwgJ0BRdWVyeShcImZpbHRlclwiKSBmaWx0ZXI6IHN0cmluZycsIHRydWUsIFtcblx0XHRcdFx0XCJjb25zdCBncmVldGluZyA9IGF3YWl0IHRoaXMuc2FtcGxlLmdldEdyZWV0aW5nKCk7XCIsXG5cdFx0XHRcdFwicmV0dXJuIHsgZmlsdGVyLCBtZXNzYWdlOiBncmVldGluZyB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XHRbXG5cdFx0XHRcImdldE9uZVwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXG5cdFx0XHRcdFwiZ2V0T25lXCIsXG5cdFx0XHRcdCdAR2V0KFwiLzppZFwiKScsXG5cdFx0XHRcdCdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IHRlbXBsYXRlIGxpdGVyYWwgaW4gZ2VuZXJhdGVkIGNvZGVcblx0XHRcdFx0W1wicmV0dXJuIHsgaWQsIG1lc3NhZ2U6IGBIZWxsbyAke2lkfSFgIH07XCJdLFxuXHRcdFx0KSxcblx0XHRdLFxuXHRcdFtcblx0XHRcdFwiY3JlYXRlXCIsXG5cdFx0XHRuZXcgQ29udHJvbGxlck1ldGhvZChcImNyZWF0ZVwiLCBcIkBQb3N0KClcIiwgXCJib2R5OiBIZWxsb0JvZHlcIiwgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIixcblx0XHRcdF0pLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJ1cGRhdGVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFxuXHRcdFx0XHRcInVwZGF0ZVwiLFxuXHRcdFx0XHQnQFB1dChcIi86aWRcIiknLFxuXHRcdFx0XHQnQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZywgYm9keTogSGVsbG9Cb2R5Jyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFtcInJldHVybiB7IGlkLCBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIl0sXG5cdFx0XHQpLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJyZW1vdmVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFwicmVtb3ZlXCIsICdARGVsZXRlKFwiLzppZFwiKScsICdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJywgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBpZCwgZGVsZXRlZDogdHJ1ZSB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XSk7XG5cblx0LyoqIFJldHJpZXZlIGEgbWV0aG9kIGJ5IG5hbWUgdG8gbXV0YXRlIGl0cyBkZWNvcmF0b3JzLiAqL1xuXHRwdWJsaWMgZ2V0TWV0aG9kKG5hbWU6IHN0cmluZyk6IENvbnRyb2xsZXJNZXRob2Qge1xuXHRcdGNvbnN0IG0gPSB0aGlzLl9tZXRob2RzLmdldChuYW1lKTtcblx0XHRpZiAobSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoYE5vIG1ldGhvZCAnJHtuYW1lfScgb24gQ29udHJvbGxlclNvdXJjZUZpbGVgKTtcblx0XHRyZXR1cm4gbTtcblx0fVxuXG5cdC8qKiBBZGQgYSBjbGFzcy1sZXZlbCBkZWNvcmF0b3IgKGUuZy4gYEBBdXRob3JpemVgKS4gKi9cblx0cHVibGljIGFkZERlY29yYXRvcihkZWNvcmF0b3I6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2NsYXNzRGVjb3JhdG9ycy5wdXNoKGRlY29yYXRvcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogQWRkIGEgbmFtZWQgaW1wb3J0IGZyb20gYEBkZWNvaGVyZS9jb3J0ZXhgLiAqL1xuXHRwdWJsaWMgYWRkQ29ydGV4SW1wb3J0KG5hbWU6IHN0cmluZywgdHlwZU9ubHkgPSBmYWxzZSk6IHRoaXMge1xuXHRcdHRoaXMuX2NvcnRleEltcG9ydHMuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGQgYSBuYW1lZCBpbXBvcnQgZnJvbSBhbnkgb3RoZXIgbW9kdWxlLiAqL1xuXHRwdWJsaWMgYWRkSW1wb3J0KG5hbWU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5nZXQoZnJvbSkgPz8gbmV3IEltcG9ydEdyb3VwKCk7XG5cdFx0Z3JvdXAuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHR0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5zZXQoZnJvbSwgZ3JvdXApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZCBhIGNvbnN0cnVjdG9yIHBhcmFtZXRlciAoZS5nLiBhbiBpbmplY3RlZCBkZXBlbmRlbmN5KS4gKi9cblx0cHVibGljIGFkZENvbnN0cnVjdG9yUGFyYW0ocGFyYW06IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2N0b3JQYXJhbXMucHVzaChwYXJhbSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG5cdFx0XHR0aGlzLl9jb3J0ZXhJbXBvcnRzLnJlbmRlcihcIkBkZWNvaGVyZS9jb3J0ZXhcIiksXG5cdFx0XHQnaW1wb3J0IHsgU2FtcGxlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9zYW1wbGUuc2VydmljZS5qc1wiOycsXG5cdFx0XTtcblxuXHRcdGZvciAoY29uc3QgW2Zyb20sIGdyb3VwXSBvZiB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcykge1xuXHRcdFx0bGluZXMucHVzaChncm91cC5yZW5kZXIoZnJvbSkpO1xuXHRcdH1cblxuXHRcdGxpbmVzLnB1c2goXG5cdFx0XHRcIlwiLFxuXHRcdFx0XCJjbGFzcyBIZWxsb0JvZHkge1wiLFxuXHRcdFx0J1xcdEBGaWVsZChcImJvZHlcIiwgXCJtZXNzYWdlXCIpJyxcblx0XHRcdFwiXFx0cHVibGljIG1lc3NhZ2UhOiBzdHJpbmc7XCIsXG5cdFx0XHRcIn1cIixcblx0XHRcdFwiXCIsXG5cdFx0KTtcblxuXHRcdGZvciAoY29uc3QgZCBvZiB0aGlzLl9jbGFzc0RlY29yYXRvcnMpIHtcblx0XHRcdGxpbmVzLnB1c2goZCk7XG5cdFx0fVxuXHRcdGxpbmVzLnB1c2goJ0BDb250cm9sbGVyKHsgcHJlZml4OiBcIi9oZWxsb1wiIH0pJywgXCJleHBvcnQgY2xhc3MgSGVsbG9Db250cm9sbGVyIHtcIiwgXCJcIik7XG5cblx0XHRsaW5lcy5wdXNoKFwiXFx0cHVibGljIGNvbnN0cnVjdG9yKFwiKTtcblx0XHRmb3IgKGNvbnN0IHAgb2YgdGhpcy5fY3RvclBhcmFtcykge1xuXHRcdFx0bGluZXMucHVzaChgXFx0XFx0JHtwfSxgKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChcIlxcdCkge31cIik7XG5cdFx0bGluZXMucHVzaChcIlwiKTtcblxuXHRcdGZvciAoY29uc3QgbWV0aG9kIG9mIHRoaXMuX21ldGhvZHMudmFsdWVzKCkpIHtcblx0XHRcdGxpbmVzLnB1c2goLi4ubWV0aG9kLnJlbmRlcigpLCBcIlwiKTtcblx0XHR9XG5cblx0XHRsaW5lcy5wdXNoKFwifVwiLCBcIlwiKTtcblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInNyYy9jb250cm9sbGVycy9oZWxsby5jb250cm9sbGVyLnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IGxpbmVzLmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiSW1wb3J0R3JvdXAiLCJfdmFsdWVzIiwiX3R5cGVzIiwiYWRkIiwibmFtZSIsInR5cGVPbmx5IiwiaW5jbHVkZXMiLCJwdXNoIiwidHlwZUlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJyZW5kZXIiLCJmcm9tIiwidmFsdWVzIiwic29ydCIsInR5cGVzIiwibWFwIiwibiIsImpvaW4iLCJDb250cm9sbGVyTWV0aG9kIiwiX2V4dHJhRGVjb3JhdG9ycyIsIl9ib2R5IiwiX2lzQXN5bmMiLCJfaHR0cERlY29yYXRvciIsIl9wYXJhbXMiLCJpc0FzeW5jIiwiYm9keSIsImFkZERlY29yYXRvciIsImRlY29yYXRvciIsInNldEJvZHkiLCJzZXRBc3luYyIsImxpbmVzIiwiZCIsImFzeW5jS3ciLCJsaW5lIiwiQ29udHJvbGxlclNvdXJjZUZpbGUiLCJrZXkiLCJDT05UUk9MTEVSX1RTIiwiX2NvcnRleEltcG9ydHMiLCJfZXh0cmFJbXBvcnRHcm91cHMiLCJNYXAiLCJfY2xhc3NEZWNvcmF0b3JzIiwiX2N0b3JQYXJhbXMiLCJfbWV0aG9kcyIsImdldE1ldGhvZCIsIm0iLCJnZXQiLCJFcnJvciIsImFkZENvcnRleEltcG9ydCIsImFkZEltcG9ydCIsImdyb3VwIiwic2V0IiwiYWRkQ29uc3RydWN0b3JQYXJhbSIsInBhcmFtIiwiZmlsZXMiLCJwIiwibWV0aG9kIiwiZmlsZVBhdGgiLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFHekQsaUZBQWlGLEdBQ2pGLE1BQU1DO0lBQ1lDLFVBQW9CLEVBQUUsQ0FBQztJQUN2QkMsU0FBbUIsRUFBRSxDQUFDO0lBRWhDQyxJQUFJQyxJQUFZLEVBQUVDLFdBQVcsS0FBSyxFQUFRO1FBQ2hELElBQUlBLFVBQVU7WUFDYixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxRQUFRLENBQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDRixPQUFPO2dCQUNoRSxJQUFJLENBQUNGLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDSDtZQUNsQjtRQUNELE9BQU87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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decohere/create",
3
- "version": "0.0.1-dev.24",
3
+ "version": "0.0.1-dev.26",
4
4
  "description": "Scaffold a new Decohere project — build with Forge, serve with Flux",
5
5
  "keywords": [
6
6
  "decohere",
@@ -21,7 +21,7 @@
21
21
  "test": "echo \"Error: no test specified\" && exit 1"
22
22
  },
23
23
  "dependencies": {
24
- "@decohere/nexus": "0.0.1-dev.24",
24
+ "@decohere/nexus": "0.0.1-dev.26",
25
25
  "commander": "^13.1.0"
26
26
  },
27
27
  "devDependencies": {},
@@ -1,2 +1,4 @@
1
+ /** Release stdin so the process can exit after interactive prompts. */
2
+ export declare function closePrompt(): void;
1
3
  export declare function ask(question: string, fallback?: string): Promise<string>;
2
4
  export declare function pick<T>(label: string, items: T[], display: (item: T) => string): Promise<T | null>;
@@ -21,8 +21,10 @@ export declare class ProjectScaffold {
21
21
  export declare abstract class WorkspaceScaffold {
22
22
  readonly files: SourceFile[];
23
23
  targetDir: string;
24
- /** Derived from the basename of targetDir. */
24
+ private _name;
25
+ /** Project name — host directory basename, not the in-container mount path. */
25
26
  get name(): string;
27
+ setName(name: string): this;
26
28
  /** Add an ad-hoc file provider whose output is included at render time. */
27
29
  addFile(provider: SourceFileProvider): this;
28
30
  abstract addModel<T extends KeyedModel>(model: T): T;
@@ -6,7 +6,7 @@ import type { ApiOptions } from "./webapi/create-api.js";
6
6
  * host, outside the container. Mounts the target directory as `/workspace` so
7
7
  * the scaffolded files are written back to the host filesystem.
8
8
  *
9
- * If `~/.config/auth0` exists on the host the directory is also mounted so
10
- * the auth0 CLI inside the container can reuse existing credentials silently.
9
+ * The container runs as the host uid/gid whenever possible so scaffolded files
10
+ * are never root-owned (post-hoc `chown` is unreliable across Docker setups).
11
11
  */
12
12
  export declare function runInBuilder(opts: ApiOptions): never;
@@ -1,6 +1,8 @@
1
1
  export declare const WEBAPI_PROJECT_DIR = "projects/api";
2
2
  export type ApiOptions = {
3
3
  d?: string;
4
+ /** Host project name (directory basename). Required when scaffolding into `/workspace`. */
5
+ projectName?: string;
4
6
  authProvider?: "auth0" | "none";
5
7
  databaseProvider?: "none" | "postgres/typeorm";
6
8
  postmanProvider?: "api" | "local" | "none";
@@ -25,6 +25,20 @@ export declare function updateApiScopes(identifier: string, scopes?: readonly st
25
25
  export declare function createSpaApp(name: string, callbackUrls: string | readonly string[]): {
26
26
  client_id: string;
27
27
  };
28
+ export type Auth0App = {
29
+ client_id: string;
30
+ name: string;
31
+ };
32
+ export declare function listApps(): Auth0App[];
33
+ export declare function updateSpaCallbacks(clientId: string, callbackUrls: string | readonly string[]): void;
34
+ /**
35
+ * Create a Postman SPA, or reuse an existing app with the same name (re-scaffold).
36
+ * Always returns a client_id suitable for Postman auth0ClientId.
37
+ */
38
+ export declare function ensureSpaApp(name: string, callbackUrls: string | readonly string[]): {
39
+ client_id: string;
40
+ reused: boolean;
41
+ };
28
42
  /** Enable a database connection for an application (required for username/password login). */
29
43
  export declare function enableConnectionForClient(connectionName: string, clientId: string): void;
30
44
  export type AdminDatabaseUser = {
@@ -35,7 +49,18 @@ export type AdminDatabaseUser = {
35
49
  };
36
50
  /** Strong default password when the scaffolder caller leaves password blank. */
37
51
  export declare function generateAdminPassword(): string;
38
- /** Create a DB connection root-admin user for local / Postman login. */
52
+ /** Look up a user by email (Management API users-by-email). */
53
+ export declare function findUserByEmail(email: string): {
54
+ user_id: string;
55
+ email: string;
56
+ } | null;
57
+ /** Reset password so a re-scaffold can write a known password to .env. */
58
+ export declare function updateUserPassword(userId: string, password: string): void;
59
+ /**
60
+ * Create a DB connection root-admin user for local / Postman login.
61
+ * If the user already exists, look them up, reset password to `input.password`,
62
+ * and return that identity so callers can still write .env credentials.
63
+ */
39
64
  export declare function createAdminDatabaseUser(input: {
40
65
  email: string;
41
66
  password: string;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Format/lint-fix all files in the scaffolded workspace with Biome.
3
+ * Prefer a global `biome` binary (builder image); fall back to `npx`.
4
+ */
5
+ export declare function formatScaffoldedFiles(targetDir: string): void;