@capitalos/angular 0.2.1 → 0.2.2

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.
@@ -1,5 +1,6 @@
1
1
  import { Injectable, inject } from '@angular/core';
2
- import { BehaviorSubject, combineLatest, map } from 'rxjs';
2
+ import { BehaviorSubject, combineLatest } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
3
4
  import { TokenType, TokenParamKey, TokenParamLocation, createLogger } from '@capitalos/core';
4
5
  import { TokenExchangeService } from './token-exchange.service';
5
6
  import { CAPITALOS_CONFIG } from './provide-capitalos';
@@ -131,4 +132,4 @@ CapitalOsAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
131
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CapitalOsAuthService, decorators: [{
132
133
  type: Injectable
133
134
  }], ctorParameters: function () { return []; } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbG9zLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvY2FwaXRhbG9zLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdEUsT0FBTyxFQUFhLFNBQVMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7O0FBRXREOztHQUVHO0FBQ0gsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7UUFDMUIsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUNELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQztBQU9EOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUEwQy9CO1FBekNpQixXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDakMseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFFcEUsOENBQThDO1FBQzdCLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFxQixTQUFTLENBQUMsQ0FBQTtRQUNyRSxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFBO1FBQzlELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENB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QUssQ0FBQyxDQUFBO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDOztpSEF0SFUsb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFRva2VuRGF0YSwgVG9rZW5UeXBlLCBUb2tlblBhcmFtS2V5LCBUb2tlblBhcmFtTG9jYXRpb24sIGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BjYXBpdGFsb3MvY29yZSdcbmltcG9ydCB7IFRva2VuRXhjaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi1leGNoYW5nZS5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ0FQSVRBTE9TX0NPTkZJRyB9IGZyb20gJy4vcHJvdmlkZS1jYXBpdGFsb3MnXG5cbi8qKlxuICogQ29udmVydHMgYW4gdW5rbm93biBlcnJvciB0byBhbiBFcnJvciBvYmplY3RcbiAqL1xuZnVuY3Rpb24gdG9FcnJvcihlcnJvcjogdW5rbm93bik6IEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3JcbiAgfVxuICByZXR1cm4gbmV3IEVycm9yKFN0cmluZyhlcnJvcikpXG59XG5cbi8qKlxuICogQXV0aGVudGljYXRpb24gc3RhdGUgZW51bVxuICovXG5leHBvcnQgdHlwZSBBdXRoU3RhdGUgPSAnaWRsZScgfCAnbG9hZGluZycgfCAnYXV0aGVudGljYXRlZCcgfCAnZXJyb3InXG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgQ2FwaXRhbE9TIGF1dGhlbnRpY2F0aW9uIHN0YXRlLlxuICogVGhpcyBpcyB0aGUgQW5ndWxhciBlcXVpdmFsZW50IG9mIFJlYWN0J3MgQ2FwaXRhbE9zQXV0aGVudGljYXRpb25Qcm92aWRlci5cbiAqXG4gKiBJdCBoYW5kbGVzOlxuICogLSBGZXRjaGluZyBvbmUtdGltZSB0b2tlbnMgdmlhIHRoZSBwcm92aWRlZCBnZXRUb2tlbiBjYWxsYmFja1xuICogLSBFeGNoYW5naW5nIG9uZS10aW1lIHRva2VucyBmb3IgbG9uZy1saXZlZCBKV1RzXG4gKiAtIE1hbmFnaW5nIHRva2VuIHN0YXRlIHZpYSBvYnNlcnZhYmxlc1xuICogLSBBdXRvLXJlZnJlc2hpbmcgdG9rZW5zIHdoZW4gdGhleSBleHBpcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhcGl0YWxPc0F1dGhTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ0FQSVRBTE9TX0NPTkZJRylcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlbkV4Y2hhbmdlU2VydmljZSA9IGluamVjdChUb2tlbkV4Y2hhbmdlU2VydmljZSlcblxuICAvLyBQcml2YXRlIEJlaGF2aW9yU3ViamVjdHMgZm9yIGludGVybmFsIHN0YXRlXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvbmdMaXZlZFRva2VuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jhc2VVcmwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RXJyb3IgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICAvLyBQdWJsaWMgb2JzZXJ2YWJsZSBmb3IgdG9rZW4gZGF0YVxuICByZWFkb25seSB0b2tlbkRhdGEkOiBPYnNlcnZhYmxlPFRva2VuRGF0YSB8IHVuZGVmaW5lZD4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9sb25nTGl2ZWRUb2tlbiQsIHRoaXMuX2Jhc2VVcmwkXSkucGlwZShcbiAgICBtYXAoKFt0b2tlbiwgYmFzZVVybF0pID0+IHtcbiAgICAgIGlmICghdG9rZW4gfHwgIWJhc2VVcmwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b2tlbixcbiAgICAgICAgdG9rZW5UeXBlOiBUb2tlblR5cGUubG9uZ0xpdmVkLFxuICAgICAgICBiYXNlVXJsLFxuICAgICAgICBwYXJhbUtleTogVG9rZW5QYXJhbUtleS5hY2Nlc3NUb2tlbixcbiAgICAgICAgcGFyYW1Mb2NhdGlvbjogVG9rZW5QYXJhbUxvY2F0aW9uLmhhc2gsXG4gICAgICB9XG4gICAgfSlcbiAgKVxuXG4gIC8vIFB1YmxpYyBvYnNlcnZhYmxlcyBmb3IgVUkgc3RhdGVcbiAgcmVhZG9ubHkgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2lzTG9hZGluZyQuYXNPYnNlcnZhYmxlKClcbiAgcmVhZG9ubHkgZXJyb3IkOiBPYnNlcnZhYmxlPEVycm9yIHwgdW5kZWZpbmVkPiA9IHRoaXMuX2Vycm9yJC5hc09ic2VydmFibGUoKVxuICByZWFkb25seSBhdXRoU3RhdGUkOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZT4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pc0xvYWRpbmckLCB0aGlzLl9lcnJvciQsIHRoaXMudG9rZW5EYXRhJF0pLnBpcGUoXG4gICAgbWFwKChbaXNMb2FkaW5nLCBlcnJvciwgdG9rZW5EYXRhXSkgPT4ge1xuICAgICAgaWYgKGlzTG9hZGluZykgcmV0dXJuICdsb2FkaW5nJ1xuICAgICAgaWYgKGVycm9yKSByZXR1cm4gJ2Vycm9yJ1xuICAgICAgaWYgKHRva2VuRGF0YSkgcmV0dXJuICdhdXRoZW50aWNhdGVkJ1xuICAgICAgcmV0dXJuICdpZGxlJ1xuICAgIH0pXG4gIClcblxuICBwcml2YXRlIGlzRGVzdHJveWVkID0gZmFsc2VcbiAgcHJpdmF0ZSBsb2dnZXI6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUxvZ2dlcj5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih0aGlzLmNvbmZpZy5lbmFibGVMb2dnaW5nLCB0aGlzLmNvbmZpZy5sb2dnZXIpXG5cbiAgICAvLyBTdGFydCBhdXRoZW50aWNhdGlvbiBmbG93IGVhZ2VybHkgb24gY29uc3RydWN0aW9uLlxuICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWw6IGF1dGggYmVnaW5zIGFzIHNvb24gYXMgdGhlIGFwcCBib290cyBzbyB0aGUgdG9rZW5cbiAgICAvLyBpcyByZWFkeSB3aGVuIENhcmRzQXBwQ29tcG9uZW50IHJlbmRlcnMsIHJlZHVjaW5nIHBlcmNlaXZlZCBsb2FkIHRpbWUuXG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZhbGlkYXRlcyB0aGUgY3VycmVudCB0b2tlbiwgdHJpZ2dlcmluZyBhIHJlZnJlc2guXG4gICAqIENhbGxlZCB3aGVuIHRoZSBpZnJhbWUgc2lnbmFscyB0aGF0IHRoZSB0b2tlbiBoYXMgZXhwaXJlZC5cbiAgICovXG4gIGludmFsaWRhdGVUb2tlbigpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5sb2coJ0NhcGl0YWxPc0F1dGhTZXJ2aWNlOiBJbnZhbGlkYXRpbmcgdG9rZW4nKVxuICAgIHRoaXMuX2xvbmdMaXZlZFRva2VuJC5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9iYXNlVXJsJC5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9lcnJvciQubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgdG9rZW4gYnkgZmV0Y2hpbmcgYSBuZXcgb25lLXRpbWUgdG9rZW4gYW5kIGV4Y2hhbmdpbmcgaXQuXG4gICAqL1xuICBhc3luYyByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFByZXZlbnQgY29uY3VycmVudCByZWZyZXNoIGNhbGxzIC0gaWYgYWxyZWFkeSBsb2FkaW5nLCBza2lwXG4gICAgaWYgKHRoaXMuX2lzTG9hZGluZyQudmFsdWUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmxvZygnQ2FwaXRhbE9zQXV0aFNlcnZpY2U6IFRva2VuIHJlZnJlc2ggYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmcnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIubG9nKCdDYXBpdGFsT3NBdXRoU2VydmljZTogU3RhcnRpbmcgdG9rZW4gcmVmcmVzaCcpXG4gICAgdGhpcy5faXNMb2FkaW5nJC5uZXh0KHRydWUpXG4gICAgdGhpcy5fZXJyb3IkLm5leHQodW5kZWZpbmVkKVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCBvbmUtdGltZSB0b2tlbiBmcm9tIHBsYXRmb3JtXG4gICAgICBjb25zdCBvbmVUaW1lVG9rZW4gPSBhd2FpdCB0aGlzLmNvbmZpZy5nZXRUb2tlbigpXG4gICAgICB0aGlzLmxvZ2dlci5sb2coJ0NhcGl0YWxPc0F1dGhTZXJ2aWNlOiBSZWNlaXZlZCBvbmUtdGltZSB0b2tlbicpXG5cbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBFeGNoYW5nZSBmb3IgbG9uZy1saXZlZCB0b2tlblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy50b2tlbkV4Y2hhbmdlU2VydmljZS5leGNoYW5nZShvbmVUaW1lVG9rZW4sIHtcbiAgICAgICAgZW5hYmxlTG9nZ2luZzogdGhpcy5jb25maWcuZW5hYmxlTG9nZ2luZyxcbiAgICAgIH0pXG5cbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb25nTGl2ZWRUb2tlbiQubmV4dChyZXN1bHQubG9uZ0xpdmVkVG9rZW4pXG4gICAgICB0aGlzLl9iYXNlVXJsJC5uZXh0KHJlc3VsdC5iYXNlVXJsKVxuICAgICAgdGhpcy5fZXJyb3IkLm5leHQodW5kZWZpbmVkKVxuICAgICAgdGhpcy5sb2dnZXIubG9nKCdDYXBpdGFsT3NBdXRoU2VydmljZTogVG9rZW4gZXhjaGFuZ2UgY29tcGxldGUnKVxuICAgIH0gY2F0Y2ggKHJhd0Vycm9yKSB7XG4gICAgICBpZiAoIXRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0b0Vycm9yKHJhd0Vycm9yKVxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQ2FwaXRhbE9zQXV0aFNlcnZpY2U6IFRva2VuIHJlZnJlc2ggZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YClcbiAgICAgICAgdGhpcy5fZXJyb3IkLm5leHQoZXJyb3IpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICghdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICB0aGlzLl9pc0xvYWRpbmckLm5leHQoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbG9zLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvY2FwaXRhbG9zLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsT0FBTyxFQUFhLFNBQVMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7O0FBRXREOztHQUVHO0FBQ0gsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7UUFDMUIsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUNELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQztBQU9EOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUEwQy9CO1FBekNpQixXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDakMseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFFcEUsOENBQThDO1FBQzdCLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFxQixTQUFTLENBQUMsQ0FBQTtRQUNyRSxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFBO1FBQzlELGdCQUFX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LElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDOztpSEF0SFUsb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFRva2VuRGF0YSwgVG9rZW5UeXBlLCBUb2tlblBhcmFtS2V5LCBUb2tlblBhcmFtTG9jYXRpb24sIGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BjYXBpdGFsb3MvY29yZSdcbmltcG9ydCB7IFRva2VuRXhjaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi1leGNoYW5nZS5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ0FQSVRBTE9TX0NPTkZJRyB9IGZyb20gJy4vcHJvdmlkZS1jYXBpdGFsb3MnXG5cbi8qKlxuICogQ29udmVydHMgYW4gdW5rbm93biBlcnJvciB0byBhbiBFcnJvciBvYmplY3RcbiAqL1xuZnVuY3Rpb24gdG9FcnJvcihlcnJvcjogdW5rbm93bik6IEVycm9yIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3JcbiAgfVxuICByZXR1cm4gbmV3IEVycm9yKFN0cmluZyhlcnJvcikpXG59XG5cbi8qKlxuICogQXV0aGVudGljYXRpb24gc3RhdGUgZW51bVxuICovXG5leHBvcnQgdHlwZSBBdXRoU3RhdGUgPSAnaWRsZScgfCAnbG9hZGluZycgfCAnYXV0aGVudGljYXRlZCcgfCAnZXJyb3InXG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgQ2FwaXRhbE9TIGF1dGhlbnRpY2F0aW9uIHN0YXRlLlxuICogVGhpcyBpcyB0aGUgQW5ndWxhciBlcXVpdmFsZW50IG9mIFJlYWN0J3MgQ2FwaXRhbE9zQXV0aGVudGljYXRpb25Qcm92aWRlci5cbiAqXG4gKiBJdCBoYW5kbGVzOlxuICogLSBGZXRjaGluZyBvbmUtdGltZSB0b2tlbnMgdmlhIHRoZSBwcm92aWRlZCBnZXRUb2tlbiBjYWxsYmFja1xuICogLSBFeGNoYW5naW5nIG9uZS10aW1lIHRva2VucyBmb3IgbG9uZy1saXZlZCBKV1RzXG4gKiAtIE1hbmFnaW5nIHRva2VuIHN0YXRlIHZpYSBvYnNlcnZhYmxlc1xuICogLSBBdXRvLXJlZnJlc2hpbmcgdG9rZW5zIHdoZW4gdGhleSBleHBpcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhcGl0YWxPc0F1dGhTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ0FQSVRBTE9TX0NPTkZJRylcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlbkV4Y2hhbmdlU2VydmljZSA9IGluamVjdChUb2tlbkV4Y2hhbmdlU2VydmljZSlcblxuICAvLyBQcml2YXRlIEJlaGF2aW9yU3ViamVjdHMgZm9yIGludGVybmFsIHN0YXRlXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvbmdMaXZlZFRva2VuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jhc2VVcmwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RXJyb3IgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICAvLyBQdWJsaWMgb2JzZXJ2YWJsZSBmb3IgdG9rZW4gZGF0YVxuICByZWFkb25seSB0b2tlbkRhdGEkOiBPYnNlcnZhYmxlPFRva2VuRGF0YSB8IHVuZGVmaW5lZD4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9sb25nTGl2ZWRUb2tlbiQsIHRoaXMuX2Jhc2VVcmwkXSkucGlwZShcbiAgICBtYXAoKFt0b2tlbiwgYmFzZVVybF0pID0+IHtcbiAgICAgIGlmICghdG9rZW4gfHwgIWJhc2VVcmwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b2tlbixcbiAgICAgICAgdG9rZW5UeXBlOiBUb2tlblR5cGUubG9uZ0xpdmVkLFxuICAgICAgICBiYXNlVXJsLFxuICAgICAgICBwYXJhbUtleTogVG9rZW5QYXJhbUtleS5hY2Nlc3NUb2tlbixcbiAgICAgICAgcGFyYW1Mb2NhdGlvbjogVG9rZW5QYXJhbUxvY2F0aW9uLmhhc2gsXG4gICAgICB9XG4gICAgfSlcbiAgKVxuXG4gIC8vIFB1YmxpYyBvYnNlcnZhYmxlcyBmb3IgVUkgc3RhdGVcbiAgcmVhZG9ubHkgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2lzTG9hZGluZyQuYXNPYnNlcnZhYmxlKClcbiAgcmVhZG9ubHkgZXJyb3IkOiBPYnNlcnZhYmxlPEVycm9yIHwgdW5kZWZpbmVkPiA9IHRoaXMuX2Vycm9yJC5hc09ic2VydmFibGUoKVxuICByZWFkb25seSBhdXRoU3RhdGUkOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZT4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pc0xvYWRpbmckLCB0aGlzLl9lcnJvciQsIHRoaXMudG9rZW5EYXRhJF0pLnBpcGUoXG4gICAgbWFwKChbaXNMb2FkaW5nLCBlcnJvciwgdG9rZW5EYXRhXSkgPT4ge1xuICAgICAgaWYgKGlzTG9hZGluZykgcmV0dXJuICdsb2FkaW5nJ1xuICAgICAgaWYgKGVycm9yKSByZXR1cm4gJ2Vycm9yJ1xuICAgICAgaWYgKHRva2VuRGF0YSkgcmV0dXJuICdhdXRoZW50aWNhdGVkJ1xuICAgICAgcmV0dXJuICdpZGxlJ1xuICAgIH0pXG4gIClcblxuICBwcml2YXRlIGlzRGVzdHJveWVkID0gZmFsc2VcbiAgcHJpdmF0ZSBsb2dnZXI6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUxvZ2dlcj5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih0aGlzLmNvbmZpZy5lbmFibGVMb2dnaW5nLCB0aGlzLmNvbmZpZy5sb2dnZXIpXG5cbiAgICAvLyBTdGFydCBhdXRoZW50aWNhdGlvbiBmbG93IGVhZ2VybHkgb24gY29uc3RydWN0aW9uLlxuICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWw6IGF1dGggYmVnaW5zIGFzIHNvb24gYXMgdGhlIGFwcCBib290cyBzbyB0aGUgdG9rZW5cbiAgICAvLyBpcyByZWFkeSB3aGVuIENhcmRzQXBwQ29tcG9uZW50IHJlbmRlcnMsIHJlZHVjaW5nIHBlcmNlaXZlZCBsb2FkIHRpbWUuXG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZhbGlkYXRlcyB0aGUgY3VycmVudCB0b2tlbiwgdHJpZ2dlcmluZyBhIHJlZnJlc2guXG4gICAqIENhbGxlZCB3aGVuIHRoZSBpZnJhbWUgc2lnbmFscyB0aGF0IHRoZSB0b2tlbiBoYXMgZXhwaXJlZC5cbiAgICovXG4gIGludmFsaWRhdGVUb2tlbigpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5sb2coJ0NhcGl0YWxPc0F1dGhTZXJ2aWNlOiBJbnZhbGlkYXRpbmcgdG9rZW4nKVxuICAgIHRoaXMuX2xvbmdMaXZlZFRva2VuJC5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9iYXNlVXJsJC5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9lcnJvciQubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgdG9rZW4gYnkgZmV0Y2hpbmcgYSBuZXcgb25lLXRpbWUgdG9rZW4gYW5kIGV4Y2hhbmdpbmcgaXQuXG4gICAqL1xuICBhc3luYyByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFByZXZlbnQgY29uY3VycmVudCByZWZyZXNoIGNhbGxzIC0gaWYgYWxyZWFkeSBsb2FkaW5nLCBza2lwXG4gICAgaWYgKHRoaXMuX2lzTG9hZGluZyQudmFsdWUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmxvZygnQ2FwaXRhbE9zQXV0aFNlcnZpY2U6IFRva2VuIHJlZnJlc2ggYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmcnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIubG9nKCdDYXBpdGFsT3NBdXRoU2VydmljZTogU3RhcnRpbmcgdG9rZW4gcmVmcmVzaCcpXG4gICAgdGhpcy5faXNMb2FkaW5nJC5uZXh0KHRydWUpXG4gICAgdGhpcy5fZXJyb3IkLm5leHQodW5kZWZpbmVkKVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCBvbmUtdGltZSB0b2tlbiBmcm9tIHBsYXRmb3JtXG4gICAgICBjb25zdCBvbmVUaW1lVG9rZW4gPSBhd2FpdCB0aGlzLmNvbmZpZy5nZXRUb2tlbigpXG4gICAgICB0aGlzLmxvZ2dlci5sb2coJ0NhcGl0YWxPc0F1dGhTZXJ2aWNlOiBSZWNlaXZlZCBvbmUtdGltZSB0b2tlbicpXG5cbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBFeGNoYW5nZSBmb3IgbG9uZy1saXZlZCB0b2tlblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy50b2tlbkV4Y2hhbmdlU2VydmljZS5leGNoYW5nZShvbmVUaW1lVG9rZW4sIHtcbiAgICAgICAgZW5hYmxlTG9nZ2luZzogdGhpcy5jb25maWcuZW5hYmxlTG9nZ2luZyxcbiAgICAgIH0pXG5cbiAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb25nTGl2ZWRUb2tlbiQubmV4dChyZXN1bHQubG9uZ0xpdmVkVG9rZW4pXG4gICAgICB0aGlzLl9iYXNlVXJsJC5uZXh0KHJlc3VsdC5iYXNlVXJsKVxuICAgICAgdGhpcy5fZXJyb3IkLm5leHQodW5kZWZpbmVkKVxuICAgICAgdGhpcy5sb2dnZXIubG9nKCdDYXBpdGFsT3NBdXRoU2VydmljZTogVG9rZW4gZXhjaGFuZ2UgY29tcGxldGUnKVxuICAgIH0gY2F0Y2ggKHJhd0Vycm9yKSB7XG4gICAgICBpZiAoIXRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0b0Vycm9yKHJhd0Vycm9yKVxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQ2FwaXRhbE9zQXV0aFNlcnZpY2U6IFRva2VuIHJlZnJlc2ggZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YClcbiAgICAgICAgdGhpcy5fZXJyb3IkLm5leHQoZXJyb3IpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICghdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICB0aGlzLl9pc0xvYWRpbmckLm5leHQoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  // AUTO-GENERATED FILE - DO NOT EDIT
2
2
  // Generated by: scripts/generate-version.js
3
3
  // Source: projects/capitalos-angular/package.json
4
- export const SDK_VERSION = '0.2.1';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsNENBQTRDO0FBQzVDLGtEQUFrRDtBQUVsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVVUTy1HRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElUXG4vLyBHZW5lcmF0ZWQgYnk6IHNjcmlwdHMvZ2VuZXJhdGUtdmVyc2lvbi5qc1xuLy8gU291cmNlOiBwcm9qZWN0cy9jYXBpdGFsb3MtYW5ndWxhci9wYWNrYWdlLmpzb25cblxuZXhwb3J0IGNvbnN0IFNES19WRVJTSU9OID0gJzAuMi4xJ1xuIl19
4
+ export const SDK_VERSION = '0.2.2';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsNENBQTRDO0FBQzVDLGtEQUFrRDtBQUVsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVVUTy1HRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElUXG4vLyBHZW5lcmF0ZWQgYnk6IHNjcmlwdHMvZ2VuZXJhdGUtdmVyc2lvbi5qc1xuLy8gU291cmNlOiBwcm9qZWN0cy9jYXBpdGFsb3MtYW5ndWxhci9wYWNrYWdlLmpzb25cblxuZXhwb3J0IGNvbnN0IFNES19WRVJTSU9OID0gJzAuMi4yJ1xuIl19
@@ -3,7 +3,8 @@ import { InjectionToken, inject, Injectable, EventEmitter, Directive, Input, Out
3
3
  import { exchangeOneTimeToken, TokenType, TokenParamKey, TokenParamLocation, createLogger, IframeManager, CapitalOSError } from '@capitalos/core';
4
4
  export { CapitalOSError, ErrorCode } from '@capitalos/core';
5
5
  import { __awaiter } from 'tslib';
6
- import { BehaviorSubject, combineLatest, map } from 'rxjs';
6
+ import { BehaviorSubject, combineLatest } from 'rxjs';
7
+ import { map } from 'rxjs/operators';
7
8
 
8
9
  /**
9
10
  * Injection token for CapitalOS configuration
@@ -228,7 +229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
228
229
  // AUTO-GENERATED FILE - DO NOT EDIT
229
230
  // Generated by: scripts/generate-version.js
230
231
  // Source: projects/capitalos-angular/package.json
231
- const SDK_VERSION = '0.2.1';
232
+ const SDK_VERSION = '0.2.2';
232
233
 
233
234
  /**
234
235
  * Common template for all iframe components.
@@ -1 +1 @@
1
- {"version":3,"file":"capitalos-angular.mjs","sources":["../../../projects/capitalos-angular/src/lib/provide-capitalos.ts","../../../projects/capitalos-angular/src/lib/token-exchange.service.ts","../../../projects/capitalos-angular/src/lib/capitalos-auth.service.ts","../../../projects/capitalos-angular/src/lib/version.ts","../../../projects/capitalos-angular/src/lib/base-iframe.component.ts","../../../projects/capitalos-angular/src/lib/cards-app.component.ts","../../../projects/capitalos-angular/src/lib/billpay-app.component.ts","../../../projects/capitalos-angular/src/lib/onboarding.component.ts","../../../projects/capitalos-angular/src/lib/capitalos.module.ts","../../../projects/capitalos-angular/src/public-api.ts","../../../projects/capitalos-angular/src/capitalos-angular.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core'\nimport { Logger, ThemeColorScheme } from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * Configuration for CapitalOS SDK\n */\nexport interface CapitalOsConfig {\n /**\n * Function that returns a promise resolving to a one-time token.\n * This is typically a call to your backend that initiates a CapitalOS login.\n */\n getToken: () => Promise<string>\n\n /**\n * Whether to enable logging for debugging purposes.\n */\n enableLogging?: boolean\n\n /**\n * Optional custom logger for capturing SDK logs.\n */\n logger?: Logger\n\n /**\n * Theme color scheme for the SDK components.\n */\n theme?: ThemeColorScheme\n}\n\n/**\n * Injection token for CapitalOS configuration\n */\nexport const CAPITALOS_CONFIG = new InjectionToken<CapitalOsConfig>('CAPITALOS_CONFIG')\n\n/**\n * Provides the CapitalOS SDK with the specified configuration.\n *\n * Usage in app.config.ts (standalone):\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideCapitalOs({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * });\n * ```\n *\n * For NgModule-based apps, use CapitalOsModule.forRoot() instead.\n */\nexport function provideCapitalOs(config: CapitalOsConfig): Provider[] {\n return [\n {\n provide: CAPITALOS_CONFIG,\n useValue: config,\n },\n TokenExchangeService,\n CapitalOsAuthService,\n ]\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { exchangeOneTimeToken } from '@capitalos/core'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\nconst TOKEN_EXCHANGE_TIMEOUT_MS = 10_000\n\nexport interface TokenExchangeResult {\n longLivedToken: string\n baseUrl: string\n}\n\n/**\n * Service responsible for exchanging one-time tokens for long-lived JWTs.\n * Creates a hidden iframe to perform the token exchange securely.\n */\n@Injectable()\nexport class TokenExchangeService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private isDestroyed = false\n private activeAbortController: AbortController | null = null\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n this.activeAbortController?.abort()\n this.activeAbortController = null\n }\n\n /**\n * Exchanges a one-time token for a long-lived JWT.\n * Delegates to @capitalos/core (browser-only) which handles iframe + Penpal lifecycle.\n */\n async exchange(oneTimeToken: string, options: { enableLogging?: boolean } = {}): Promise<TokenExchangeResult> {\n if (this.isDestroyed) {\n throw new Error('TokenExchangeService was destroyed')\n }\n\n // Abort any in-flight exchange when a new one begins.\n this.activeAbortController?.abort()\n\n const abortController = new AbortController()\n this.activeAbortController = abortController\n\n try {\n return await exchangeOneTimeToken({\n oneTimeToken,\n enableLogging: options.enableLogging,\n logger: this.config.logger,\n timeoutMs: TOKEN_EXCHANGE_TIMEOUT_MS,\n signal: abortController.signal,\n })\n } finally {\n if (this.activeAbortController === abortController) {\n this.activeAbortController = null\n }\n }\n }\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs'\nimport { TokenData, TokenType, TokenParamKey, TokenParamLocation, createLogger } from '@capitalos/core'\nimport { TokenExchangeService } from './token-exchange.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\n/**\n * Converts an unknown error to an Error object\n */\nfunction toError(error: unknown): Error {\n if (error instanceof Error) {\n return error\n }\n return new Error(String(error))\n}\n\n/**\n * Authentication state enum\n */\nexport type AuthState = 'idle' | 'loading' | 'authenticated' | 'error'\n\n/**\n * Service that manages CapitalOS authentication state.\n * This is the Angular equivalent of React's CapitalOsAuthenticationProvider.\n *\n * It handles:\n * - Fetching one-time tokens via the provided getToken callback\n * - Exchanging one-time tokens for long-lived JWTs\n * - Managing token state via observables\n * - Auto-refreshing tokens when they expire\n */\n@Injectable()\nexport class CapitalOsAuthService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private readonly tokenExchangeService = inject(TokenExchangeService)\n\n // Private BehaviorSubjects for internal state\n private readonly _longLivedToken$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _baseUrl$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _isLoading$ = new BehaviorSubject(false)\n private readonly _error$ = new BehaviorSubject<Error | undefined>(undefined)\n\n // Public observable for token data\n readonly tokenData$: Observable<TokenData | undefined> = combineLatest([this._longLivedToken$, this._baseUrl$]).pipe(\n map(([token, baseUrl]) => {\n if (!token || !baseUrl) {\n return undefined\n }\n\n return {\n token,\n tokenType: TokenType.longLived,\n baseUrl,\n paramKey: TokenParamKey.accessToken,\n paramLocation: TokenParamLocation.hash,\n }\n })\n )\n\n // Public observables for UI state\n readonly isLoading$: Observable<boolean> = this._isLoading$.asObservable()\n readonly error$: Observable<Error | undefined> = this._error$.asObservable()\n readonly authState$: Observable<AuthState> = combineLatest([this._isLoading$, this._error$, this.tokenData$]).pipe(\n map(([isLoading, error, tokenData]) => {\n if (isLoading) return 'loading'\n if (error) return 'error'\n if (tokenData) return 'authenticated'\n return 'idle'\n })\n )\n\n private isDestroyed = false\n private logger: ReturnType<typeof createLogger>\n\n constructor() {\n this.logger = createLogger(this.config.enableLogging, this.config.logger)\n\n // Start authentication flow eagerly on construction.\n // This is intentional: auth begins as soon as the app boots so the token\n // is ready when CardsAppComponent renders, reducing perceived load time.\n this.refreshToken()\n }\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n }\n\n /**\n * Invalidates the current token, triggering a refresh.\n * Called when the iframe signals that the token has expired.\n */\n invalidateToken(): void {\n this.logger.log('CapitalOsAuthService: Invalidating token')\n this._longLivedToken$.next(undefined)\n this._baseUrl$.next(undefined)\n this._error$.next(undefined)\n this.refreshToken()\n }\n\n /**\n * Refreshes the token by fetching a new one-time token and exchanging it.\n */\n async refreshToken(): Promise<void> {\n if (this.isDestroyed) {\n return\n }\n\n // Prevent concurrent refresh calls - if already loading, skip\n if (this._isLoading$.value) {\n this.logger.log('CapitalOsAuthService: Token refresh already in progress, skipping')\n return\n }\n\n this.logger.log('CapitalOsAuthService: Starting token refresh')\n this._isLoading$.next(true)\n this._error$.next(undefined)\n\n try {\n // Get one-time token from platform\n const oneTimeToken = await this.config.getToken()\n this.logger.log('CapitalOsAuthService: Received one-time token')\n\n if (this.isDestroyed) {\n return\n }\n\n // Exchange for long-lived token\n const result = await this.tokenExchangeService.exchange(oneTimeToken, {\n enableLogging: this.config.enableLogging,\n })\n\n if (this.isDestroyed) {\n return\n }\n\n this._longLivedToken$.next(result.longLivedToken)\n this._baseUrl$.next(result.baseUrl)\n this._error$.next(undefined)\n this.logger.log('CapitalOsAuthService: Token exchange complete')\n } catch (rawError) {\n if (!this.isDestroyed) {\n const error = toError(rawError)\n this.logger.error(`CapitalOsAuthService: Token refresh failed: ${error.message}`)\n this._error$.next(error)\n }\n } finally {\n if (!this.isDestroyed) {\n this._isLoading$.next(false)\n }\n }\n }\n}\n","// AUTO-GENERATED FILE - DO NOT EDIT\n// Generated by: scripts/generate-version.js\n// Source: projects/capitalos-angular/package.json\n\nexport const SDK_VERSION = '0.2.1'\n","import {\n inject,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n Directive,\n} from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport {\n IframeManager,\n CapitalOSError,\n TokenData,\n RawErrorDetails,\n ThemeColorScheme,\n RenderingContext,\n IframeManagerConfig,\n} from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\nimport { SDK_VERSION } from './version'\n\n/**\n * Common template for all iframe components.\n * Angular doesn't support inheriting templates, so subclasses must use this constant.\n */\nexport const IFRAME_COMPONENT_TEMPLATE = `<div #iframeContainer class=\"capitalos-iframe-container\"></div>`\n\n/**\n * Common styles for all iframe components.\n * Angular doesn't support inheriting styles, so subclasses must use this constant.\n *\n * Why Angular needs these styles (unlike React/Vue):\n * Angular component selectors (e.g., <capitalos-cards-app>) remain in the DOM as real elements.\n * Without :host styling, the component element may collapse or not fill its container.\n * In React/Vue, component tags are replaced by rendered content, so no wrapper styling is needed.\n */\nexport const IFRAME_COMPONENT_STYLES = [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n .capitalos-iframe-container {\n width: 100%;\n }\n `,\n]\n\n/**\n * Component-specific callbacks to pass to IframeManager.\n * Excludes common callbacks (onLoad, onError, onTokenExpired) which the base class handles.\n */\nexport type ComponentCallbacks = Omit<IframeManagerConfig['callbacks'], 'onLoad' | 'onError' | 'onTokenExpired'>\n\n/**\n * Abstract base class for CapitalOS iframe components.\n *\n * Handles common functionality:\n * - Token subscription and iframe initialization\n * - Common inputs (theme, heightOffsetPx, enableLogging)\n * - Common outputs (loaded, error)\n * - Lifecycle management (cleanup on destroy)\n *\n * Subclasses must implement:\n * - `getRenderingContext()` - returns the component-specific rendering context\n *\n * Subclasses may override:\n * - `getComponentCallbacks()` - returns component-specific Penpal callbacks\n *\n * Note: Rendering context inputs (e.g., entryPoint, exitPoint for Onboarding) are read once\n * at iframe initialization. Changes to these inputs after the iframe loads will NOT trigger\n * re-initialization. This matches the behavior of the React SDK.\n *\n * @example\n * ```typescript\n * @Component({ selector: 'my-component', ... })\n * export class MyComponent extends BaseIframeComponent {\n * protected getRenderingContext(): RenderingContext {\n * return { entryPoint: 'myComponent' }\n * }\n * }\n * ```\n */\n@Directive()\nexport abstract class BaseIframeComponent implements AfterViewInit, OnDestroy {\n // Injected services\n protected readonly authService = inject(CapitalOsAuthService)\n protected readonly config = inject(CAPITALOS_CONFIG)\n\n // Common inputs\n @Input() theme?: ThemeColorScheme\n @Input() heightOffsetPx = 12\n @Input() enableLogging?: boolean\n\n // Common outputs\n @Output() loaded = new EventEmitter<void>()\n @Output() error = new EventEmitter<CapitalOSError>()\n\n // View children\n @ViewChild('iframeContainer') iframeContainer?: ElementRef<HTMLDivElement>\n\n // Internal state\n private iframeManager?: IframeManager\n private tokenDataSubscription?: Subscription\n\n ngAfterViewInit(): void {\n // Subscribe to tokenData$ and initialize iframe when ready\n this.tokenDataSubscription = this.authService.tokenData$.subscribe((tokenData) => {\n if (tokenData && this.iframeContainer) {\n this.initializeIframe(tokenData, this.iframeContainer.nativeElement)\n }\n })\n }\n\n ngOnDestroy(): void {\n this.tokenDataSubscription?.unsubscribe()\n this.iframeManager?.destroy()\n }\n\n /**\n * Returns the rendering context for this component.\n * Must be implemented by subclasses.\n */\n protected abstract getRenderingContext(): RenderingContext\n\n /**\n * Returns component-specific Penpal callbacks.\n * Override in subclasses that need callbacks (e.g., Onboarding, TokenExchange).\n */\n protected getComponentCallbacks(): ComponentCallbacks {\n return {}\n }\n\n private initializeIframe(tokenData: TokenData, container: HTMLElement): void {\n // Destroy previous iframe if exists\n this.iframeManager?.destroy()\n\n const resolvedEnableLogging = this.enableLogging ?? this.config.enableLogging ?? false\n const resolvedTheme = this.theme ?? this.config.theme\n\n this.iframeManager = new IframeManager({\n container,\n tokenData,\n renderingContext: this.getRenderingContext(),\n theme: resolvedTheme,\n enableLogging: resolvedEnableLogging,\n logger: this.config.logger,\n sdkVersion: SDK_VERSION,\n heightOffsetPx: this.heightOffsetPx,\n callbacks: {\n onLoad: () => {\n this.loaded.emit()\n },\n onError: (rawError: RawErrorDetails) => {\n const capitalOsError = new CapitalOSError(rawError)\n this.error.emit(capitalOsError)\n },\n onTokenExpired: () => {\n this.authService.invalidateToken()\n },\n ...this.getComponentCallbacks(),\n },\n })\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * CardsApp component that renders the CapitalOS cards interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!cardsLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-cards-app\n * (loaded)=\"cardsLoaded = true\"\n * (error)=\"onCardsError($event)\"\n * ></capitalos-cards-app>\n * ```\n */\n@Component({\n selector: 'capitalos-cards-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class CardsAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'cardsApp' }\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * BillPayApp component that renders the CapitalOS bill payment interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!billPayLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-billpay-app\n * (loaded)=\"billPayLoaded = true\"\n * (error)=\"onBillPayError($event)\"\n * ></capitalos-billpay-app>\n * ```\n */\n@Component({\n selector: 'capitalos-billpay-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class BillPayAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'billPayApp' }\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core'\nimport { RenderingContext, Account, OnboardingEntryPoint, OnboardingExitPoint, CopyOverrides } from '@capitalos/core'\nimport {\n BaseIframeComponent,\n ComponentCallbacks,\n IFRAME_COMPONENT_TEMPLATE,\n IFRAME_COMPONENT_STYLES,\n} from './base-iframe.component'\n\n/**\n * Onboarding component that renders the CapitalOS onboarding flow in an iframe.\n *\n * The component emits events for loading state and completion - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!onboardingLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-onboarding\n * [entryPoint]=\"'welcome'\"\n * [exitPoint]=\"'activation'\"\n * (loaded)=\"onboardingLoaded = true\"\n * (error)=\"onOnboardingError($event)\"\n * (done)=\"onOnboardingComplete($event)\"\n * ></capitalos-onboarding>\n * ```\n */\n@Component({\n selector: 'capitalos-onboarding',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class OnboardingComponent extends BaseIframeComponent {\n // Onboarding-specific inputs\n @Input() entryPoint?: OnboardingEntryPoint\n @Input() exitPoint?: OnboardingExitPoint\n @Input() allowExitOnNonApproved?: boolean\n /** Custom text for the final \"done\" button shown at the end of the onboarding flow. */\n @Input() doneButtonText?: string\n\n // Onboarding-specific outputs\n @Output() done = new EventEmitter<Account>()\n\n protected getRenderingContext(): RenderingContext {\n return {\n entryPoint: 'onboarding',\n onboardingEntryPoint: this.entryPoint,\n onboardingExitPoint: this.exitPoint,\n allowExitOnNonApproved: this.allowExitOnNonApproved,\n copy: this.doneButtonText\n ? ({\n 'onboarding.doneButton': this.doneButtonText,\n 'onboarding.continueButton': this.doneButtonText,\n 'activation.successButton': this.doneButtonText,\n } as CopyOverrides)\n : undefined,\n }\n }\n\n protected override getComponentCallbacks(): ComponentCallbacks {\n return {\n onboarding: {\n onDone: (account: Account) => {\n this.done.emit(account)\n },\n },\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core'\nimport { CardsAppComponent } from './cards-app.component'\nimport { BillPayAppComponent } from './billpay-app.component'\nimport { OnboardingComponent } from './onboarding.component'\nimport { CapitalOsConfig, CAPITALOS_CONFIG } from './provide-capitalos'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * NgModule for CapitalOS SDK.\n *\n * Use this module for NgModule-based Angular applications.\n * For standalone applications, use provideCapitalOs() instead.\n *\n * Usage:\n * ```typescript\n * @NgModule({\n * imports: [\n * CapitalOsModule.forRoot({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * })\n * export class AppModule {}\n * ```\n */\n@NgModule({\n imports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n exports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n})\nexport class CapitalOsModule {\n static forRoot(config: CapitalOsConfig): ModuleWithProviders<CapitalOsModule> {\n return {\n ngModule: CapitalOsModule,\n providers: [{ provide: CAPITALOS_CONFIG, useValue: config }, TokenExchangeService, CapitalOsAuthService],\n }\n }\n}\n","/*\n * Public API Surface of @capitalos/angular\n */\n\n// Components\nexport { CardsAppComponent } from './lib/cards-app.component'\nexport { BillPayAppComponent } from './lib/billpay-app.component'\nexport { OnboardingComponent } from './lib/onboarding.component'\n\n// Services\nexport { CapitalOsAuthService } from './lib/capitalos-auth.service'\nexport type { AuthState } from './lib/capitalos-auth.service'\n\n// Provider (standalone)\nexport { provideCapitalOs, CAPITALOS_CONFIG } from './lib/provide-capitalos'\nexport type { CapitalOsConfig } from './lib/provide-capitalos'\n\n// Module (NgModule-based apps)\nexport { CapitalOsModule } from './lib/capitalos.module'\n\n// Re-export commonly used types from core\nexport type { ThemeColorScheme, Logger, TokenData, RawErrorDetails, Account, AccountStatus } from '@capitalos/core'\n\nexport { CapitalOSError, ErrorCode } from '@capitalos/core'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capitalos-angular.mjs","sources":["../../../projects/capitalos-angular/src/lib/provide-capitalos.ts","../../../projects/capitalos-angular/src/lib/token-exchange.service.ts","../../../projects/capitalos-angular/src/lib/capitalos-auth.service.ts","../../../projects/capitalos-angular/src/lib/version.ts","../../../projects/capitalos-angular/src/lib/base-iframe.component.ts","../../../projects/capitalos-angular/src/lib/cards-app.component.ts","../../../projects/capitalos-angular/src/lib/billpay-app.component.ts","../../../projects/capitalos-angular/src/lib/onboarding.component.ts","../../../projects/capitalos-angular/src/lib/capitalos.module.ts","../../../projects/capitalos-angular/src/public-api.ts","../../../projects/capitalos-angular/src/capitalos-angular.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core'\nimport { Logger, ThemeColorScheme } from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * Configuration for CapitalOS SDK\n */\nexport interface CapitalOsConfig {\n /**\n * Function that returns a promise resolving to a one-time token.\n * This is typically a call to your backend that initiates a CapitalOS login.\n */\n getToken: () => Promise<string>\n\n /**\n * Whether to enable logging for debugging purposes.\n */\n enableLogging?: boolean\n\n /**\n * Optional custom logger for capturing SDK logs.\n */\n logger?: Logger\n\n /**\n * Theme color scheme for the SDK components.\n */\n theme?: ThemeColorScheme\n}\n\n/**\n * Injection token for CapitalOS configuration\n */\nexport const CAPITALOS_CONFIG = new InjectionToken<CapitalOsConfig>('CAPITALOS_CONFIG')\n\n/**\n * Provides the CapitalOS SDK with the specified configuration.\n *\n * Usage in app.config.ts (standalone):\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideCapitalOs({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * });\n * ```\n *\n * For NgModule-based apps, use CapitalOsModule.forRoot() instead.\n */\nexport function provideCapitalOs(config: CapitalOsConfig): Provider[] {\n return [\n {\n provide: CAPITALOS_CONFIG,\n useValue: config,\n },\n TokenExchangeService,\n CapitalOsAuthService,\n ]\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { exchangeOneTimeToken } from '@capitalos/core'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\nconst TOKEN_EXCHANGE_TIMEOUT_MS = 10_000\n\nexport interface TokenExchangeResult {\n longLivedToken: string\n baseUrl: string\n}\n\n/**\n * Service responsible for exchanging one-time tokens for long-lived JWTs.\n * Creates a hidden iframe to perform the token exchange securely.\n */\n@Injectable()\nexport class TokenExchangeService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private isDestroyed = false\n private activeAbortController: AbortController | null = null\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n this.activeAbortController?.abort()\n this.activeAbortController = null\n }\n\n /**\n * Exchanges a one-time token for a long-lived JWT.\n * Delegates to @capitalos/core (browser-only) which handles iframe + Penpal lifecycle.\n */\n async exchange(oneTimeToken: string, options: { enableLogging?: boolean } = {}): Promise<TokenExchangeResult> {\n if (this.isDestroyed) {\n throw new Error('TokenExchangeService was destroyed')\n }\n\n // Abort any in-flight exchange when a new one begins.\n this.activeAbortController?.abort()\n\n const abortController = new AbortController()\n this.activeAbortController = abortController\n\n try {\n return await exchangeOneTimeToken({\n oneTimeToken,\n enableLogging: options.enableLogging,\n logger: this.config.logger,\n timeoutMs: TOKEN_EXCHANGE_TIMEOUT_MS,\n signal: abortController.signal,\n })\n } finally {\n if (this.activeAbortController === abortController) {\n this.activeAbortController = null\n }\n }\n }\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs'\nimport { map } from 'rxjs/operators'\nimport { TokenData, TokenType, TokenParamKey, TokenParamLocation, createLogger } from '@capitalos/core'\nimport { TokenExchangeService } from './token-exchange.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\n/**\n * Converts an unknown error to an Error object\n */\nfunction toError(error: unknown): Error {\n if (error instanceof Error) {\n return error\n }\n return new Error(String(error))\n}\n\n/**\n * Authentication state enum\n */\nexport type AuthState = 'idle' | 'loading' | 'authenticated' | 'error'\n\n/**\n * Service that manages CapitalOS authentication state.\n * This is the Angular equivalent of React's CapitalOsAuthenticationProvider.\n *\n * It handles:\n * - Fetching one-time tokens via the provided getToken callback\n * - Exchanging one-time tokens for long-lived JWTs\n * - Managing token state via observables\n * - Auto-refreshing tokens when they expire\n */\n@Injectable()\nexport class CapitalOsAuthService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private readonly tokenExchangeService = inject(TokenExchangeService)\n\n // Private BehaviorSubjects for internal state\n private readonly _longLivedToken$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _baseUrl$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _isLoading$ = new BehaviorSubject(false)\n private readonly _error$ = new BehaviorSubject<Error | undefined>(undefined)\n\n // Public observable for token data\n readonly tokenData$: Observable<TokenData | undefined> = combineLatest([this._longLivedToken$, this._baseUrl$]).pipe(\n map(([token, baseUrl]) => {\n if (!token || !baseUrl) {\n return undefined\n }\n\n return {\n token,\n tokenType: TokenType.longLived,\n baseUrl,\n paramKey: TokenParamKey.accessToken,\n paramLocation: TokenParamLocation.hash,\n }\n })\n )\n\n // Public observables for UI state\n readonly isLoading$: Observable<boolean> = this._isLoading$.asObservable()\n readonly error$: Observable<Error | undefined> = this._error$.asObservable()\n readonly authState$: Observable<AuthState> = combineLatest([this._isLoading$, this._error$, this.tokenData$]).pipe(\n map(([isLoading, error, tokenData]) => {\n if (isLoading) return 'loading'\n if (error) return 'error'\n if (tokenData) return 'authenticated'\n return 'idle'\n })\n )\n\n private isDestroyed = false\n private logger: ReturnType<typeof createLogger>\n\n constructor() {\n this.logger = createLogger(this.config.enableLogging, this.config.logger)\n\n // Start authentication flow eagerly on construction.\n // This is intentional: auth begins as soon as the app boots so the token\n // is ready when CardsAppComponent renders, reducing perceived load time.\n this.refreshToken()\n }\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n }\n\n /**\n * Invalidates the current token, triggering a refresh.\n * Called when the iframe signals that the token has expired.\n */\n invalidateToken(): void {\n this.logger.log('CapitalOsAuthService: Invalidating token')\n this._longLivedToken$.next(undefined)\n this._baseUrl$.next(undefined)\n this._error$.next(undefined)\n this.refreshToken()\n }\n\n /**\n * Refreshes the token by fetching a new one-time token and exchanging it.\n */\n async refreshToken(): Promise<void> {\n if (this.isDestroyed) {\n return\n }\n\n // Prevent concurrent refresh calls - if already loading, skip\n if (this._isLoading$.value) {\n this.logger.log('CapitalOsAuthService: Token refresh already in progress, skipping')\n return\n }\n\n this.logger.log('CapitalOsAuthService: Starting token refresh')\n this._isLoading$.next(true)\n this._error$.next(undefined)\n\n try {\n // Get one-time token from platform\n const oneTimeToken = await this.config.getToken()\n this.logger.log('CapitalOsAuthService: Received one-time token')\n\n if (this.isDestroyed) {\n return\n }\n\n // Exchange for long-lived token\n const result = await this.tokenExchangeService.exchange(oneTimeToken, {\n enableLogging: this.config.enableLogging,\n })\n\n if (this.isDestroyed) {\n return\n }\n\n this._longLivedToken$.next(result.longLivedToken)\n this._baseUrl$.next(result.baseUrl)\n this._error$.next(undefined)\n this.logger.log('CapitalOsAuthService: Token exchange complete')\n } catch (rawError) {\n if (!this.isDestroyed) {\n const error = toError(rawError)\n this.logger.error(`CapitalOsAuthService: Token refresh failed: ${error.message}`)\n this._error$.next(error)\n }\n } finally {\n if (!this.isDestroyed) {\n this._isLoading$.next(false)\n }\n }\n }\n}\n","// AUTO-GENERATED FILE - DO NOT EDIT\n// Generated by: scripts/generate-version.js\n// Source: projects/capitalos-angular/package.json\n\nexport const SDK_VERSION = '0.2.2'\n","import {\n inject,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n Directive,\n} from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport {\n IframeManager,\n CapitalOSError,\n TokenData,\n RawErrorDetails,\n ThemeColorScheme,\n RenderingContext,\n IframeManagerConfig,\n} from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\nimport { SDK_VERSION } from './version'\n\n/**\n * Common template for all iframe components.\n * Angular doesn't support inheriting templates, so subclasses must use this constant.\n */\nexport const IFRAME_COMPONENT_TEMPLATE = `<div #iframeContainer class=\"capitalos-iframe-container\"></div>`\n\n/**\n * Common styles for all iframe components.\n * Angular doesn't support inheriting styles, so subclasses must use this constant.\n *\n * Why Angular needs these styles (unlike React/Vue):\n * Angular component selectors (e.g., <capitalos-cards-app>) remain in the DOM as real elements.\n * Without :host styling, the component element may collapse or not fill its container.\n * In React/Vue, component tags are replaced by rendered content, so no wrapper styling is needed.\n */\nexport const IFRAME_COMPONENT_STYLES = [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n .capitalos-iframe-container {\n width: 100%;\n }\n `,\n]\n\n/**\n * Component-specific callbacks to pass to IframeManager.\n * Excludes common callbacks (onLoad, onError, onTokenExpired) which the base class handles.\n */\nexport type ComponentCallbacks = Omit<IframeManagerConfig['callbacks'], 'onLoad' | 'onError' | 'onTokenExpired'>\n\n/**\n * Abstract base class for CapitalOS iframe components.\n *\n * Handles common functionality:\n * - Token subscription and iframe initialization\n * - Common inputs (theme, heightOffsetPx, enableLogging)\n * - Common outputs (loaded, error)\n * - Lifecycle management (cleanup on destroy)\n *\n * Subclasses must implement:\n * - `getRenderingContext()` - returns the component-specific rendering context\n *\n * Subclasses may override:\n * - `getComponentCallbacks()` - returns component-specific Penpal callbacks\n *\n * Note: Rendering context inputs (e.g., entryPoint, exitPoint for Onboarding) are read once\n * at iframe initialization. Changes to these inputs after the iframe loads will NOT trigger\n * re-initialization. This matches the behavior of the React SDK.\n *\n * @example\n * ```typescript\n * @Component({ selector: 'my-component', ... })\n * export class MyComponent extends BaseIframeComponent {\n * protected getRenderingContext(): RenderingContext {\n * return { entryPoint: 'myComponent' }\n * }\n * }\n * ```\n */\n@Directive()\nexport abstract class BaseIframeComponent implements AfterViewInit, OnDestroy {\n // Injected services\n protected readonly authService = inject(CapitalOsAuthService)\n protected readonly config = inject(CAPITALOS_CONFIG)\n\n // Common inputs\n @Input() theme?: ThemeColorScheme\n @Input() heightOffsetPx = 12\n @Input() enableLogging?: boolean\n\n // Common outputs\n @Output() loaded = new EventEmitter<void>()\n @Output() error = new EventEmitter<CapitalOSError>()\n\n // View children\n @ViewChild('iframeContainer') iframeContainer?: ElementRef<HTMLDivElement>\n\n // Internal state\n private iframeManager?: IframeManager\n private tokenDataSubscription?: Subscription\n\n ngAfterViewInit(): void {\n // Subscribe to tokenData$ and initialize iframe when ready\n this.tokenDataSubscription = this.authService.tokenData$.subscribe((tokenData) => {\n if (tokenData && this.iframeContainer) {\n this.initializeIframe(tokenData, this.iframeContainer.nativeElement)\n }\n })\n }\n\n ngOnDestroy(): void {\n this.tokenDataSubscription?.unsubscribe()\n this.iframeManager?.destroy()\n }\n\n /**\n * Returns the rendering context for this component.\n * Must be implemented by subclasses.\n */\n protected abstract getRenderingContext(): RenderingContext\n\n /**\n * Returns component-specific Penpal callbacks.\n * Override in subclasses that need callbacks (e.g., Onboarding, TokenExchange).\n */\n protected getComponentCallbacks(): ComponentCallbacks {\n return {}\n }\n\n private initializeIframe(tokenData: TokenData, container: HTMLElement): void {\n // Destroy previous iframe if exists\n this.iframeManager?.destroy()\n\n const resolvedEnableLogging = this.enableLogging ?? this.config.enableLogging ?? false\n const resolvedTheme = this.theme ?? this.config.theme\n\n this.iframeManager = new IframeManager({\n container,\n tokenData,\n renderingContext: this.getRenderingContext(),\n theme: resolvedTheme,\n enableLogging: resolvedEnableLogging,\n logger: this.config.logger,\n sdkVersion: SDK_VERSION,\n heightOffsetPx: this.heightOffsetPx,\n callbacks: {\n onLoad: () => {\n this.loaded.emit()\n },\n onError: (rawError: RawErrorDetails) => {\n const capitalOsError = new CapitalOSError(rawError)\n this.error.emit(capitalOsError)\n },\n onTokenExpired: () => {\n this.authService.invalidateToken()\n },\n ...this.getComponentCallbacks(),\n },\n })\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * CardsApp component that renders the CapitalOS cards interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!cardsLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-cards-app\n * (loaded)=\"cardsLoaded = true\"\n * (error)=\"onCardsError($event)\"\n * ></capitalos-cards-app>\n * ```\n */\n@Component({\n selector: 'capitalos-cards-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class CardsAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'cardsApp' }\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * BillPayApp component that renders the CapitalOS bill payment interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!billPayLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-billpay-app\n * (loaded)=\"billPayLoaded = true\"\n * (error)=\"onBillPayError($event)\"\n * ></capitalos-billpay-app>\n * ```\n */\n@Component({\n selector: 'capitalos-billpay-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class BillPayAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'billPayApp' }\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core'\nimport { RenderingContext, Account, OnboardingEntryPoint, OnboardingExitPoint, CopyOverrides } from '@capitalos/core'\nimport {\n BaseIframeComponent,\n ComponentCallbacks,\n IFRAME_COMPONENT_TEMPLATE,\n IFRAME_COMPONENT_STYLES,\n} from './base-iframe.component'\n\n/**\n * Onboarding component that renders the CapitalOS onboarding flow in an iframe.\n *\n * The component emits events for loading state and completion - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!onboardingLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-onboarding\n * [entryPoint]=\"'welcome'\"\n * [exitPoint]=\"'activation'\"\n * (loaded)=\"onboardingLoaded = true\"\n * (error)=\"onOnboardingError($event)\"\n * (done)=\"onOnboardingComplete($event)\"\n * ></capitalos-onboarding>\n * ```\n */\n@Component({\n selector: 'capitalos-onboarding',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class OnboardingComponent extends BaseIframeComponent {\n // Onboarding-specific inputs\n @Input() entryPoint?: OnboardingEntryPoint\n @Input() exitPoint?: OnboardingExitPoint\n @Input() allowExitOnNonApproved?: boolean\n /** Custom text for the final \"done\" button shown at the end of the onboarding flow. */\n @Input() doneButtonText?: string\n\n // Onboarding-specific outputs\n @Output() done = new EventEmitter<Account>()\n\n protected getRenderingContext(): RenderingContext {\n return {\n entryPoint: 'onboarding',\n onboardingEntryPoint: this.entryPoint,\n onboardingExitPoint: this.exitPoint,\n allowExitOnNonApproved: this.allowExitOnNonApproved,\n copy: this.doneButtonText\n ? ({\n 'onboarding.doneButton': this.doneButtonText,\n 'onboarding.continueButton': this.doneButtonText,\n 'activation.successButton': this.doneButtonText,\n } as CopyOverrides)\n : undefined,\n }\n }\n\n protected override getComponentCallbacks(): ComponentCallbacks {\n return {\n onboarding: {\n onDone: (account: Account) => {\n this.done.emit(account)\n },\n },\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core'\nimport { CardsAppComponent } from './cards-app.component'\nimport { BillPayAppComponent } from './billpay-app.component'\nimport { OnboardingComponent } from './onboarding.component'\nimport { CapitalOsConfig, CAPITALOS_CONFIG } from './provide-capitalos'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * NgModule for CapitalOS SDK.\n *\n * Use this module for NgModule-based Angular applications.\n * For standalone applications, use provideCapitalOs() instead.\n *\n * Usage:\n * ```typescript\n * @NgModule({\n * imports: [\n * CapitalOsModule.forRoot({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * })\n * export class AppModule {}\n * ```\n */\n@NgModule({\n imports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n exports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n})\nexport class CapitalOsModule {\n static forRoot(config: CapitalOsConfig): ModuleWithProviders<CapitalOsModule> {\n return {\n ngModule: CapitalOsModule,\n providers: [{ provide: CAPITALOS_CONFIG, useValue: config }, TokenExchangeService, CapitalOsAuthService],\n }\n }\n}\n","/*\n * Public API Surface of @capitalos/angular\n */\n\n// Components\nexport { CardsAppComponent } from './lib/cards-app.component'\nexport { BillPayAppComponent } from './lib/billpay-app.component'\nexport { OnboardingComponent } from './lib/onboarding.component'\n\n// Services\nexport { CapitalOsAuthService } from './lib/capitalos-auth.service'\nexport type { AuthState } from './lib/capitalos-auth.service'\n\n// Provider (standalone)\nexport { provideCapitalOs, CAPITALOS_CONFIG } from './lib/provide-capitalos'\nexport type { CapitalOsConfig } from './lib/provide-capitalos'\n\n// Module (NgModule-based apps)\nexport { CapitalOsModule } from './lib/capitalos.module'\n\n// Re-export commonly used types from core\nexport type { ThemeColorScheme, Logger, TokenData, RawErrorDetails, Account, AccountStatus } from '@capitalos/core'\n\nexport { CapitalOSError, ErrorCode } from '@capitalos/core'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, Injectable, EventEmitter, Directive, Input, Output, ViewChild, Component, NgModule } from '@angular/core';
3
3
  import { exchangeOneTimeToken, TokenType, TokenParamKey, TokenParamLocation, createLogger, IframeManager, CapitalOSError } from '@capitalos/core';
4
4
  export { CapitalOSError, ErrorCode } from '@capitalos/core';
5
- import { BehaviorSubject, combineLatest, map } from 'rxjs';
5
+ import { BehaviorSubject, combineLatest } from 'rxjs';
6
+ import { map } from 'rxjs/operators';
6
7
 
7
8
  /**
8
9
  * Injection token for CapitalOS configuration
@@ -221,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
221
222
  // AUTO-GENERATED FILE - DO NOT EDIT
222
223
  // Generated by: scripts/generate-version.js
223
224
  // Source: projects/capitalos-angular/package.json
224
- const SDK_VERSION = '0.2.1';
225
+ const SDK_VERSION = '0.2.2';
225
226
 
226
227
  /**
227
228
  * Common template for all iframe components.
@@ -1 +1 @@
1
- {"version":3,"file":"capitalos-angular.mjs","sources":["../../../projects/capitalos-angular/src/lib/provide-capitalos.ts","../../../projects/capitalos-angular/src/lib/token-exchange.service.ts","../../../projects/capitalos-angular/src/lib/capitalos-auth.service.ts","../../../projects/capitalos-angular/src/lib/version.ts","../../../projects/capitalos-angular/src/lib/base-iframe.component.ts","../../../projects/capitalos-angular/src/lib/cards-app.component.ts","../../../projects/capitalos-angular/src/lib/billpay-app.component.ts","../../../projects/capitalos-angular/src/lib/onboarding.component.ts","../../../projects/capitalos-angular/src/lib/capitalos.module.ts","../../../projects/capitalos-angular/src/public-api.ts","../../../projects/capitalos-angular/src/capitalos-angular.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core'\nimport { Logger, ThemeColorScheme } from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * Configuration for CapitalOS SDK\n */\nexport interface CapitalOsConfig {\n /**\n * Function that returns a promise resolving to a one-time token.\n * This is typically a call to your backend that initiates a CapitalOS login.\n */\n getToken: () => Promise<string>\n\n /**\n * Whether to enable logging for debugging purposes.\n */\n enableLogging?: boolean\n\n /**\n * Optional custom logger for capturing SDK logs.\n */\n logger?: Logger\n\n /**\n * Theme color scheme for the SDK components.\n */\n theme?: ThemeColorScheme\n}\n\n/**\n * Injection token for CapitalOS configuration\n */\nexport const CAPITALOS_CONFIG = new InjectionToken<CapitalOsConfig>('CAPITALOS_CONFIG')\n\n/**\n * Provides the CapitalOS SDK with the specified configuration.\n *\n * Usage in app.config.ts (standalone):\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideCapitalOs({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * });\n * ```\n *\n * For NgModule-based apps, use CapitalOsModule.forRoot() instead.\n */\nexport function provideCapitalOs(config: CapitalOsConfig): Provider[] {\n return [\n {\n provide: CAPITALOS_CONFIG,\n useValue: config,\n },\n TokenExchangeService,\n CapitalOsAuthService,\n ]\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { exchangeOneTimeToken } from '@capitalos/core'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\nconst TOKEN_EXCHANGE_TIMEOUT_MS = 10_000\n\nexport interface TokenExchangeResult {\n longLivedToken: string\n baseUrl: string\n}\n\n/**\n * Service responsible for exchanging one-time tokens for long-lived JWTs.\n * Creates a hidden iframe to perform the token exchange securely.\n */\n@Injectable()\nexport class TokenExchangeService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private isDestroyed = false\n private activeAbortController: AbortController | null = null\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n this.activeAbortController?.abort()\n this.activeAbortController = null\n }\n\n /**\n * Exchanges a one-time token for a long-lived JWT.\n * Delegates to @capitalos/core (browser-only) which handles iframe + Penpal lifecycle.\n */\n async exchange(oneTimeToken: string, options: { enableLogging?: boolean } = {}): Promise<TokenExchangeResult> {\n if (this.isDestroyed) {\n throw new Error('TokenExchangeService was destroyed')\n }\n\n // Abort any in-flight exchange when a new one begins.\n this.activeAbortController?.abort()\n\n const abortController = new AbortController()\n this.activeAbortController = abortController\n\n try {\n return await exchangeOneTimeToken({\n oneTimeToken,\n enableLogging: options.enableLogging,\n logger: this.config.logger,\n timeoutMs: TOKEN_EXCHANGE_TIMEOUT_MS,\n signal: abortController.signal,\n })\n } finally {\n if (this.activeAbortController === abortController) {\n this.activeAbortController = null\n }\n }\n }\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs'\nimport { TokenData, TokenType, TokenParamKey, TokenParamLocation, createLogger } from '@capitalos/core'\nimport { TokenExchangeService } from './token-exchange.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\n/**\n * Converts an unknown error to an Error object\n */\nfunction toError(error: unknown): Error {\n if (error instanceof Error) {\n return error\n }\n return new Error(String(error))\n}\n\n/**\n * Authentication state enum\n */\nexport type AuthState = 'idle' | 'loading' | 'authenticated' | 'error'\n\n/**\n * Service that manages CapitalOS authentication state.\n * This is the Angular equivalent of React's CapitalOsAuthenticationProvider.\n *\n * It handles:\n * - Fetching one-time tokens via the provided getToken callback\n * - Exchanging one-time tokens for long-lived JWTs\n * - Managing token state via observables\n * - Auto-refreshing tokens when they expire\n */\n@Injectable()\nexport class CapitalOsAuthService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private readonly tokenExchangeService = inject(TokenExchangeService)\n\n // Private BehaviorSubjects for internal state\n private readonly _longLivedToken$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _baseUrl$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _isLoading$ = new BehaviorSubject(false)\n private readonly _error$ = new BehaviorSubject<Error | undefined>(undefined)\n\n // Public observable for token data\n readonly tokenData$: Observable<TokenData | undefined> = combineLatest([this._longLivedToken$, this._baseUrl$]).pipe(\n map(([token, baseUrl]) => {\n if (!token || !baseUrl) {\n return undefined\n }\n\n return {\n token,\n tokenType: TokenType.longLived,\n baseUrl,\n paramKey: TokenParamKey.accessToken,\n paramLocation: TokenParamLocation.hash,\n }\n })\n )\n\n // Public observables for UI state\n readonly isLoading$: Observable<boolean> = this._isLoading$.asObservable()\n readonly error$: Observable<Error | undefined> = this._error$.asObservable()\n readonly authState$: Observable<AuthState> = combineLatest([this._isLoading$, this._error$, this.tokenData$]).pipe(\n map(([isLoading, error, tokenData]) => {\n if (isLoading) return 'loading'\n if (error) return 'error'\n if (tokenData) return 'authenticated'\n return 'idle'\n })\n )\n\n private isDestroyed = false\n private logger: ReturnType<typeof createLogger>\n\n constructor() {\n this.logger = createLogger(this.config.enableLogging, this.config.logger)\n\n // Start authentication flow eagerly on construction.\n // This is intentional: auth begins as soon as the app boots so the token\n // is ready when CardsAppComponent renders, reducing perceived load time.\n this.refreshToken()\n }\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n }\n\n /**\n * Invalidates the current token, triggering a refresh.\n * Called when the iframe signals that the token has expired.\n */\n invalidateToken(): void {\n this.logger.log('CapitalOsAuthService: Invalidating token')\n this._longLivedToken$.next(undefined)\n this._baseUrl$.next(undefined)\n this._error$.next(undefined)\n this.refreshToken()\n }\n\n /**\n * Refreshes the token by fetching a new one-time token and exchanging it.\n */\n async refreshToken(): Promise<void> {\n if (this.isDestroyed) {\n return\n }\n\n // Prevent concurrent refresh calls - if already loading, skip\n if (this._isLoading$.value) {\n this.logger.log('CapitalOsAuthService: Token refresh already in progress, skipping')\n return\n }\n\n this.logger.log('CapitalOsAuthService: Starting token refresh')\n this._isLoading$.next(true)\n this._error$.next(undefined)\n\n try {\n // Get one-time token from platform\n const oneTimeToken = await this.config.getToken()\n this.logger.log('CapitalOsAuthService: Received one-time token')\n\n if (this.isDestroyed) {\n return\n }\n\n // Exchange for long-lived token\n const result = await this.tokenExchangeService.exchange(oneTimeToken, {\n enableLogging: this.config.enableLogging,\n })\n\n if (this.isDestroyed) {\n return\n }\n\n this._longLivedToken$.next(result.longLivedToken)\n this._baseUrl$.next(result.baseUrl)\n this._error$.next(undefined)\n this.logger.log('CapitalOsAuthService: Token exchange complete')\n } catch (rawError) {\n if (!this.isDestroyed) {\n const error = toError(rawError)\n this.logger.error(`CapitalOsAuthService: Token refresh failed: ${error.message}`)\n this._error$.next(error)\n }\n } finally {\n if (!this.isDestroyed) {\n this._isLoading$.next(false)\n }\n }\n }\n}\n","// AUTO-GENERATED FILE - DO NOT EDIT\n// Generated by: scripts/generate-version.js\n// Source: projects/capitalos-angular/package.json\n\nexport const SDK_VERSION = '0.2.1'\n","import {\n inject,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n Directive,\n} from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport {\n IframeManager,\n CapitalOSError,\n TokenData,\n RawErrorDetails,\n ThemeColorScheme,\n RenderingContext,\n IframeManagerConfig,\n} from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\nimport { SDK_VERSION } from './version'\n\n/**\n * Common template for all iframe components.\n * Angular doesn't support inheriting templates, so subclasses must use this constant.\n */\nexport const IFRAME_COMPONENT_TEMPLATE = `<div #iframeContainer class=\"capitalos-iframe-container\"></div>`\n\n/**\n * Common styles for all iframe components.\n * Angular doesn't support inheriting styles, so subclasses must use this constant.\n *\n * Why Angular needs these styles (unlike React/Vue):\n * Angular component selectors (e.g., <capitalos-cards-app>) remain in the DOM as real elements.\n * Without :host styling, the component element may collapse or not fill its container.\n * In React/Vue, component tags are replaced by rendered content, so no wrapper styling is needed.\n */\nexport const IFRAME_COMPONENT_STYLES = [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n .capitalos-iframe-container {\n width: 100%;\n }\n `,\n]\n\n/**\n * Component-specific callbacks to pass to IframeManager.\n * Excludes common callbacks (onLoad, onError, onTokenExpired) which the base class handles.\n */\nexport type ComponentCallbacks = Omit<IframeManagerConfig['callbacks'], 'onLoad' | 'onError' | 'onTokenExpired'>\n\n/**\n * Abstract base class for CapitalOS iframe components.\n *\n * Handles common functionality:\n * - Token subscription and iframe initialization\n * - Common inputs (theme, heightOffsetPx, enableLogging)\n * - Common outputs (loaded, error)\n * - Lifecycle management (cleanup on destroy)\n *\n * Subclasses must implement:\n * - `getRenderingContext()` - returns the component-specific rendering context\n *\n * Subclasses may override:\n * - `getComponentCallbacks()` - returns component-specific Penpal callbacks\n *\n * Note: Rendering context inputs (e.g., entryPoint, exitPoint for Onboarding) are read once\n * at iframe initialization. Changes to these inputs after the iframe loads will NOT trigger\n * re-initialization. This matches the behavior of the React SDK.\n *\n * @example\n * ```typescript\n * @Component({ selector: 'my-component', ... })\n * export class MyComponent extends BaseIframeComponent {\n * protected getRenderingContext(): RenderingContext {\n * return { entryPoint: 'myComponent' }\n * }\n * }\n * ```\n */\n@Directive()\nexport abstract class BaseIframeComponent implements AfterViewInit, OnDestroy {\n // Injected services\n protected readonly authService = inject(CapitalOsAuthService)\n protected readonly config = inject(CAPITALOS_CONFIG)\n\n // Common inputs\n @Input() theme?: ThemeColorScheme\n @Input() heightOffsetPx = 12\n @Input() enableLogging?: boolean\n\n // Common outputs\n @Output() loaded = new EventEmitter<void>()\n @Output() error = new EventEmitter<CapitalOSError>()\n\n // View children\n @ViewChild('iframeContainer') iframeContainer?: ElementRef<HTMLDivElement>\n\n // Internal state\n private iframeManager?: IframeManager\n private tokenDataSubscription?: Subscription\n\n ngAfterViewInit(): void {\n // Subscribe to tokenData$ and initialize iframe when ready\n this.tokenDataSubscription = this.authService.tokenData$.subscribe((tokenData) => {\n if (tokenData && this.iframeContainer) {\n this.initializeIframe(tokenData, this.iframeContainer.nativeElement)\n }\n })\n }\n\n ngOnDestroy(): void {\n this.tokenDataSubscription?.unsubscribe()\n this.iframeManager?.destroy()\n }\n\n /**\n * Returns the rendering context for this component.\n * Must be implemented by subclasses.\n */\n protected abstract getRenderingContext(): RenderingContext\n\n /**\n * Returns component-specific Penpal callbacks.\n * Override in subclasses that need callbacks (e.g., Onboarding, TokenExchange).\n */\n protected getComponentCallbacks(): ComponentCallbacks {\n return {}\n }\n\n private initializeIframe(tokenData: TokenData, container: HTMLElement): void {\n // Destroy previous iframe if exists\n this.iframeManager?.destroy()\n\n const resolvedEnableLogging = this.enableLogging ?? this.config.enableLogging ?? false\n const resolvedTheme = this.theme ?? this.config.theme\n\n this.iframeManager = new IframeManager({\n container,\n tokenData,\n renderingContext: this.getRenderingContext(),\n theme: resolvedTheme,\n enableLogging: resolvedEnableLogging,\n logger: this.config.logger,\n sdkVersion: SDK_VERSION,\n heightOffsetPx: this.heightOffsetPx,\n callbacks: {\n onLoad: () => {\n this.loaded.emit()\n },\n onError: (rawError: RawErrorDetails) => {\n const capitalOsError = new CapitalOSError(rawError)\n this.error.emit(capitalOsError)\n },\n onTokenExpired: () => {\n this.authService.invalidateToken()\n },\n ...this.getComponentCallbacks(),\n },\n })\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * CardsApp component that renders the CapitalOS cards interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!cardsLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-cards-app\n * (loaded)=\"cardsLoaded = true\"\n * (error)=\"onCardsError($event)\"\n * ></capitalos-cards-app>\n * ```\n */\n@Component({\n selector: 'capitalos-cards-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class CardsAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'cardsApp' }\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * BillPayApp component that renders the CapitalOS bill payment interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!billPayLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-billpay-app\n * (loaded)=\"billPayLoaded = true\"\n * (error)=\"onBillPayError($event)\"\n * ></capitalos-billpay-app>\n * ```\n */\n@Component({\n selector: 'capitalos-billpay-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class BillPayAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'billPayApp' }\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core'\nimport { RenderingContext, Account, OnboardingEntryPoint, OnboardingExitPoint, CopyOverrides } from '@capitalos/core'\nimport {\n BaseIframeComponent,\n ComponentCallbacks,\n IFRAME_COMPONENT_TEMPLATE,\n IFRAME_COMPONENT_STYLES,\n} from './base-iframe.component'\n\n/**\n * Onboarding component that renders the CapitalOS onboarding flow in an iframe.\n *\n * The component emits events for loading state and completion - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!onboardingLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-onboarding\n * [entryPoint]=\"'welcome'\"\n * [exitPoint]=\"'activation'\"\n * (loaded)=\"onboardingLoaded = true\"\n * (error)=\"onOnboardingError($event)\"\n * (done)=\"onOnboardingComplete($event)\"\n * ></capitalos-onboarding>\n * ```\n */\n@Component({\n selector: 'capitalos-onboarding',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class OnboardingComponent extends BaseIframeComponent {\n // Onboarding-specific inputs\n @Input() entryPoint?: OnboardingEntryPoint\n @Input() exitPoint?: OnboardingExitPoint\n @Input() allowExitOnNonApproved?: boolean\n /** Custom text for the final \"done\" button shown at the end of the onboarding flow. */\n @Input() doneButtonText?: string\n\n // Onboarding-specific outputs\n @Output() done = new EventEmitter<Account>()\n\n protected getRenderingContext(): RenderingContext {\n return {\n entryPoint: 'onboarding',\n onboardingEntryPoint: this.entryPoint,\n onboardingExitPoint: this.exitPoint,\n allowExitOnNonApproved: this.allowExitOnNonApproved,\n copy: this.doneButtonText\n ? ({\n 'onboarding.doneButton': this.doneButtonText,\n 'onboarding.continueButton': this.doneButtonText,\n 'activation.successButton': this.doneButtonText,\n } as CopyOverrides)\n : undefined,\n }\n }\n\n protected override getComponentCallbacks(): ComponentCallbacks {\n return {\n onboarding: {\n onDone: (account: Account) => {\n this.done.emit(account)\n },\n },\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core'\nimport { CardsAppComponent } from './cards-app.component'\nimport { BillPayAppComponent } from './billpay-app.component'\nimport { OnboardingComponent } from './onboarding.component'\nimport { CapitalOsConfig, CAPITALOS_CONFIG } from './provide-capitalos'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * NgModule for CapitalOS SDK.\n *\n * Use this module for NgModule-based Angular applications.\n * For standalone applications, use provideCapitalOs() instead.\n *\n * Usage:\n * ```typescript\n * @NgModule({\n * imports: [\n * CapitalOsModule.forRoot({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * })\n * export class AppModule {}\n * ```\n */\n@NgModule({\n imports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n exports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n})\nexport class CapitalOsModule {\n static forRoot(config: CapitalOsConfig): ModuleWithProviders<CapitalOsModule> {\n return {\n ngModule: CapitalOsModule,\n providers: [{ provide: CAPITALOS_CONFIG, useValue: config }, TokenExchangeService, CapitalOsAuthService],\n }\n }\n}\n","/*\n * Public API Surface of @capitalos/angular\n */\n\n// Components\nexport { CardsAppComponent } from './lib/cards-app.component'\nexport { BillPayAppComponent } from './lib/billpay-app.component'\nexport { OnboardingComponent } from './lib/onboarding.component'\n\n// Services\nexport { CapitalOsAuthService } from './lib/capitalos-auth.service'\nexport type { AuthState } from './lib/capitalos-auth.service'\n\n// Provider (standalone)\nexport { provideCapitalOs, CAPITALOS_CONFIG } from './lib/provide-capitalos'\nexport type { CapitalOsConfig } from './lib/provide-capitalos'\n\n// Module (NgModule-based apps)\nexport { CapitalOsModule } from './lib/capitalos.module'\n\n// Re-export commonly used types from core\nexport type { ThemeColorScheme, Logger, TokenData, RawErrorDetails, Account, AccountStatus } from '@capitalos/core'\n\nexport { CapitalOSError, ErrorCode } from '@capitalos/core'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capitalos-angular.mjs","sources":["../../../projects/capitalos-angular/src/lib/provide-capitalos.ts","../../../projects/capitalos-angular/src/lib/token-exchange.service.ts","../../../projects/capitalos-angular/src/lib/capitalos-auth.service.ts","../../../projects/capitalos-angular/src/lib/version.ts","../../../projects/capitalos-angular/src/lib/base-iframe.component.ts","../../../projects/capitalos-angular/src/lib/cards-app.component.ts","../../../projects/capitalos-angular/src/lib/billpay-app.component.ts","../../../projects/capitalos-angular/src/lib/onboarding.component.ts","../../../projects/capitalos-angular/src/lib/capitalos.module.ts","../../../projects/capitalos-angular/src/public-api.ts","../../../projects/capitalos-angular/src/capitalos-angular.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core'\nimport { Logger, ThemeColorScheme } from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * Configuration for CapitalOS SDK\n */\nexport interface CapitalOsConfig {\n /**\n * Function that returns a promise resolving to a one-time token.\n * This is typically a call to your backend that initiates a CapitalOS login.\n */\n getToken: () => Promise<string>\n\n /**\n * Whether to enable logging for debugging purposes.\n */\n enableLogging?: boolean\n\n /**\n * Optional custom logger for capturing SDK logs.\n */\n logger?: Logger\n\n /**\n * Theme color scheme for the SDK components.\n */\n theme?: ThemeColorScheme\n}\n\n/**\n * Injection token for CapitalOS configuration\n */\nexport const CAPITALOS_CONFIG = new InjectionToken<CapitalOsConfig>('CAPITALOS_CONFIG')\n\n/**\n * Provides the CapitalOS SDK with the specified configuration.\n *\n * Usage in app.config.ts (standalone):\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideCapitalOs({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * });\n * ```\n *\n * For NgModule-based apps, use CapitalOsModule.forRoot() instead.\n */\nexport function provideCapitalOs(config: CapitalOsConfig): Provider[] {\n return [\n {\n provide: CAPITALOS_CONFIG,\n useValue: config,\n },\n TokenExchangeService,\n CapitalOsAuthService,\n ]\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { exchangeOneTimeToken } from '@capitalos/core'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\nconst TOKEN_EXCHANGE_TIMEOUT_MS = 10_000\n\nexport interface TokenExchangeResult {\n longLivedToken: string\n baseUrl: string\n}\n\n/**\n * Service responsible for exchanging one-time tokens for long-lived JWTs.\n * Creates a hidden iframe to perform the token exchange securely.\n */\n@Injectable()\nexport class TokenExchangeService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private isDestroyed = false\n private activeAbortController: AbortController | null = null\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n this.activeAbortController?.abort()\n this.activeAbortController = null\n }\n\n /**\n * Exchanges a one-time token for a long-lived JWT.\n * Delegates to @capitalos/core (browser-only) which handles iframe + Penpal lifecycle.\n */\n async exchange(oneTimeToken: string, options: { enableLogging?: boolean } = {}): Promise<TokenExchangeResult> {\n if (this.isDestroyed) {\n throw new Error('TokenExchangeService was destroyed')\n }\n\n // Abort any in-flight exchange when a new one begins.\n this.activeAbortController?.abort()\n\n const abortController = new AbortController()\n this.activeAbortController = abortController\n\n try {\n return await exchangeOneTimeToken({\n oneTimeToken,\n enableLogging: options.enableLogging,\n logger: this.config.logger,\n timeoutMs: TOKEN_EXCHANGE_TIMEOUT_MS,\n signal: abortController.signal,\n })\n } finally {\n if (this.activeAbortController === abortController) {\n this.activeAbortController = null\n }\n }\n }\n}\n","import { Injectable, inject, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs'\nimport { map } from 'rxjs/operators'\nimport { TokenData, TokenType, TokenParamKey, TokenParamLocation, createLogger } from '@capitalos/core'\nimport { TokenExchangeService } from './token-exchange.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\n\n/**\n * Converts an unknown error to an Error object\n */\nfunction toError(error: unknown): Error {\n if (error instanceof Error) {\n return error\n }\n return new Error(String(error))\n}\n\n/**\n * Authentication state enum\n */\nexport type AuthState = 'idle' | 'loading' | 'authenticated' | 'error'\n\n/**\n * Service that manages CapitalOS authentication state.\n * This is the Angular equivalent of React's CapitalOsAuthenticationProvider.\n *\n * It handles:\n * - Fetching one-time tokens via the provided getToken callback\n * - Exchanging one-time tokens for long-lived JWTs\n * - Managing token state via observables\n * - Auto-refreshing tokens when they expire\n */\n@Injectable()\nexport class CapitalOsAuthService implements OnDestroy {\n private readonly config = inject(CAPITALOS_CONFIG)\n private readonly tokenExchangeService = inject(TokenExchangeService)\n\n // Private BehaviorSubjects for internal state\n private readonly _longLivedToken$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _baseUrl$ = new BehaviorSubject<string | undefined>(undefined)\n private readonly _isLoading$ = new BehaviorSubject(false)\n private readonly _error$ = new BehaviorSubject<Error | undefined>(undefined)\n\n // Public observable for token data\n readonly tokenData$: Observable<TokenData | undefined> = combineLatest([this._longLivedToken$, this._baseUrl$]).pipe(\n map(([token, baseUrl]) => {\n if (!token || !baseUrl) {\n return undefined\n }\n\n return {\n token,\n tokenType: TokenType.longLived,\n baseUrl,\n paramKey: TokenParamKey.accessToken,\n paramLocation: TokenParamLocation.hash,\n }\n })\n )\n\n // Public observables for UI state\n readonly isLoading$: Observable<boolean> = this._isLoading$.asObservable()\n readonly error$: Observable<Error | undefined> = this._error$.asObservable()\n readonly authState$: Observable<AuthState> = combineLatest([this._isLoading$, this._error$, this.tokenData$]).pipe(\n map(([isLoading, error, tokenData]) => {\n if (isLoading) return 'loading'\n if (error) return 'error'\n if (tokenData) return 'authenticated'\n return 'idle'\n })\n )\n\n private isDestroyed = false\n private logger: ReturnType<typeof createLogger>\n\n constructor() {\n this.logger = createLogger(this.config.enableLogging, this.config.logger)\n\n // Start authentication flow eagerly on construction.\n // This is intentional: auth begins as soon as the app boots so the token\n // is ready when CardsAppComponent renders, reducing perceived load time.\n this.refreshToken()\n }\n\n ngOnDestroy(): void {\n this.isDestroyed = true\n }\n\n /**\n * Invalidates the current token, triggering a refresh.\n * Called when the iframe signals that the token has expired.\n */\n invalidateToken(): void {\n this.logger.log('CapitalOsAuthService: Invalidating token')\n this._longLivedToken$.next(undefined)\n this._baseUrl$.next(undefined)\n this._error$.next(undefined)\n this.refreshToken()\n }\n\n /**\n * Refreshes the token by fetching a new one-time token and exchanging it.\n */\n async refreshToken(): Promise<void> {\n if (this.isDestroyed) {\n return\n }\n\n // Prevent concurrent refresh calls - if already loading, skip\n if (this._isLoading$.value) {\n this.logger.log('CapitalOsAuthService: Token refresh already in progress, skipping')\n return\n }\n\n this.logger.log('CapitalOsAuthService: Starting token refresh')\n this._isLoading$.next(true)\n this._error$.next(undefined)\n\n try {\n // Get one-time token from platform\n const oneTimeToken = await this.config.getToken()\n this.logger.log('CapitalOsAuthService: Received one-time token')\n\n if (this.isDestroyed) {\n return\n }\n\n // Exchange for long-lived token\n const result = await this.tokenExchangeService.exchange(oneTimeToken, {\n enableLogging: this.config.enableLogging,\n })\n\n if (this.isDestroyed) {\n return\n }\n\n this._longLivedToken$.next(result.longLivedToken)\n this._baseUrl$.next(result.baseUrl)\n this._error$.next(undefined)\n this.logger.log('CapitalOsAuthService: Token exchange complete')\n } catch (rawError) {\n if (!this.isDestroyed) {\n const error = toError(rawError)\n this.logger.error(`CapitalOsAuthService: Token refresh failed: ${error.message}`)\n this._error$.next(error)\n }\n } finally {\n if (!this.isDestroyed) {\n this._isLoading$.next(false)\n }\n }\n }\n}\n","// AUTO-GENERATED FILE - DO NOT EDIT\n// Generated by: scripts/generate-version.js\n// Source: projects/capitalos-angular/package.json\n\nexport const SDK_VERSION = '0.2.2'\n","import {\n inject,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n Directive,\n} from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport {\n IframeManager,\n CapitalOSError,\n TokenData,\n RawErrorDetails,\n ThemeColorScheme,\n RenderingContext,\n IframeManagerConfig,\n} from '@capitalos/core'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { CAPITALOS_CONFIG } from './provide-capitalos'\nimport { SDK_VERSION } from './version'\n\n/**\n * Common template for all iframe components.\n * Angular doesn't support inheriting templates, so subclasses must use this constant.\n */\nexport const IFRAME_COMPONENT_TEMPLATE = `<div #iframeContainer class=\"capitalos-iframe-container\"></div>`\n\n/**\n * Common styles for all iframe components.\n * Angular doesn't support inheriting styles, so subclasses must use this constant.\n *\n * Why Angular needs these styles (unlike React/Vue):\n * Angular component selectors (e.g., <capitalos-cards-app>) remain in the DOM as real elements.\n * Without :host styling, the component element may collapse or not fill its container.\n * In React/Vue, component tags are replaced by rendered content, so no wrapper styling is needed.\n */\nexport const IFRAME_COMPONENT_STYLES = [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n .capitalos-iframe-container {\n width: 100%;\n }\n `,\n]\n\n/**\n * Component-specific callbacks to pass to IframeManager.\n * Excludes common callbacks (onLoad, onError, onTokenExpired) which the base class handles.\n */\nexport type ComponentCallbacks = Omit<IframeManagerConfig['callbacks'], 'onLoad' | 'onError' | 'onTokenExpired'>\n\n/**\n * Abstract base class for CapitalOS iframe components.\n *\n * Handles common functionality:\n * - Token subscription and iframe initialization\n * - Common inputs (theme, heightOffsetPx, enableLogging)\n * - Common outputs (loaded, error)\n * - Lifecycle management (cleanup on destroy)\n *\n * Subclasses must implement:\n * - `getRenderingContext()` - returns the component-specific rendering context\n *\n * Subclasses may override:\n * - `getComponentCallbacks()` - returns component-specific Penpal callbacks\n *\n * Note: Rendering context inputs (e.g., entryPoint, exitPoint for Onboarding) are read once\n * at iframe initialization. Changes to these inputs after the iframe loads will NOT trigger\n * re-initialization. This matches the behavior of the React SDK.\n *\n * @example\n * ```typescript\n * @Component({ selector: 'my-component', ... })\n * export class MyComponent extends BaseIframeComponent {\n * protected getRenderingContext(): RenderingContext {\n * return { entryPoint: 'myComponent' }\n * }\n * }\n * ```\n */\n@Directive()\nexport abstract class BaseIframeComponent implements AfterViewInit, OnDestroy {\n // Injected services\n protected readonly authService = inject(CapitalOsAuthService)\n protected readonly config = inject(CAPITALOS_CONFIG)\n\n // Common inputs\n @Input() theme?: ThemeColorScheme\n @Input() heightOffsetPx = 12\n @Input() enableLogging?: boolean\n\n // Common outputs\n @Output() loaded = new EventEmitter<void>()\n @Output() error = new EventEmitter<CapitalOSError>()\n\n // View children\n @ViewChild('iframeContainer') iframeContainer?: ElementRef<HTMLDivElement>\n\n // Internal state\n private iframeManager?: IframeManager\n private tokenDataSubscription?: Subscription\n\n ngAfterViewInit(): void {\n // Subscribe to tokenData$ and initialize iframe when ready\n this.tokenDataSubscription = this.authService.tokenData$.subscribe((tokenData) => {\n if (tokenData && this.iframeContainer) {\n this.initializeIframe(tokenData, this.iframeContainer.nativeElement)\n }\n })\n }\n\n ngOnDestroy(): void {\n this.tokenDataSubscription?.unsubscribe()\n this.iframeManager?.destroy()\n }\n\n /**\n * Returns the rendering context for this component.\n * Must be implemented by subclasses.\n */\n protected abstract getRenderingContext(): RenderingContext\n\n /**\n * Returns component-specific Penpal callbacks.\n * Override in subclasses that need callbacks (e.g., Onboarding, TokenExchange).\n */\n protected getComponentCallbacks(): ComponentCallbacks {\n return {}\n }\n\n private initializeIframe(tokenData: TokenData, container: HTMLElement): void {\n // Destroy previous iframe if exists\n this.iframeManager?.destroy()\n\n const resolvedEnableLogging = this.enableLogging ?? this.config.enableLogging ?? false\n const resolvedTheme = this.theme ?? this.config.theme\n\n this.iframeManager = new IframeManager({\n container,\n tokenData,\n renderingContext: this.getRenderingContext(),\n theme: resolvedTheme,\n enableLogging: resolvedEnableLogging,\n logger: this.config.logger,\n sdkVersion: SDK_VERSION,\n heightOffsetPx: this.heightOffsetPx,\n callbacks: {\n onLoad: () => {\n this.loaded.emit()\n },\n onError: (rawError: RawErrorDetails) => {\n const capitalOsError = new CapitalOSError(rawError)\n this.error.emit(capitalOsError)\n },\n onTokenExpired: () => {\n this.authService.invalidateToken()\n },\n ...this.getComponentCallbacks(),\n },\n })\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * CardsApp component that renders the CapitalOS cards interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!cardsLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-cards-app\n * (loaded)=\"cardsLoaded = true\"\n * (error)=\"onCardsError($event)\"\n * ></capitalos-cards-app>\n * ```\n */\n@Component({\n selector: 'capitalos-cards-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class CardsAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'cardsApp' }\n }\n}\n","import { Component } from '@angular/core'\nimport { RenderingContext } from '@capitalos/core'\nimport { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component'\n\n/**\n * BillPayApp component that renders the CapitalOS bill payment interface in an iframe.\n *\n * The component emits events for loading state - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!billPayLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-billpay-app\n * (loaded)=\"billPayLoaded = true\"\n * (error)=\"onBillPayError($event)\"\n * ></capitalos-billpay-app>\n * ```\n */\n@Component({\n selector: 'capitalos-billpay-app',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class BillPayAppComponent extends BaseIframeComponent {\n protected getRenderingContext(): RenderingContext {\n return { entryPoint: 'billPayApp' }\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core'\nimport { RenderingContext, Account, OnboardingEntryPoint, OnboardingExitPoint, CopyOverrides } from '@capitalos/core'\nimport {\n BaseIframeComponent,\n ComponentCallbacks,\n IFRAME_COMPONENT_TEMPLATE,\n IFRAME_COMPONENT_STYLES,\n} from './base-iframe.component'\n\n/**\n * Onboarding component that renders the CapitalOS onboarding flow in an iframe.\n *\n * The component emits events for loading state and completion - consumers should handle their own loading UI:\n *\n * ```html\n * <div *ngIf=\"!onboardingLoaded\">\n * <my-loading-spinner></my-loading-spinner>\n * </div>\n * <capitalos-onboarding\n * [entryPoint]=\"'welcome'\"\n * [exitPoint]=\"'activation'\"\n * (loaded)=\"onboardingLoaded = true\"\n * (error)=\"onOnboardingError($event)\"\n * (done)=\"onOnboardingComplete($event)\"\n * ></capitalos-onboarding>\n * ```\n */\n@Component({\n selector: 'capitalos-onboarding',\n standalone: true,\n template: IFRAME_COMPONENT_TEMPLATE,\n styles: IFRAME_COMPONENT_STYLES,\n})\nexport class OnboardingComponent extends BaseIframeComponent {\n // Onboarding-specific inputs\n @Input() entryPoint?: OnboardingEntryPoint\n @Input() exitPoint?: OnboardingExitPoint\n @Input() allowExitOnNonApproved?: boolean\n /** Custom text for the final \"done\" button shown at the end of the onboarding flow. */\n @Input() doneButtonText?: string\n\n // Onboarding-specific outputs\n @Output() done = new EventEmitter<Account>()\n\n protected getRenderingContext(): RenderingContext {\n return {\n entryPoint: 'onboarding',\n onboardingEntryPoint: this.entryPoint,\n onboardingExitPoint: this.exitPoint,\n allowExitOnNonApproved: this.allowExitOnNonApproved,\n copy: this.doneButtonText\n ? ({\n 'onboarding.doneButton': this.doneButtonText,\n 'onboarding.continueButton': this.doneButtonText,\n 'activation.successButton': this.doneButtonText,\n } as CopyOverrides)\n : undefined,\n }\n }\n\n protected override getComponentCallbacks(): ComponentCallbacks {\n return {\n onboarding: {\n onDone: (account: Account) => {\n this.done.emit(account)\n },\n },\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core'\nimport { CardsAppComponent } from './cards-app.component'\nimport { BillPayAppComponent } from './billpay-app.component'\nimport { OnboardingComponent } from './onboarding.component'\nimport { CapitalOsConfig, CAPITALOS_CONFIG } from './provide-capitalos'\nimport { CapitalOsAuthService } from './capitalos-auth.service'\nimport { TokenExchangeService } from './token-exchange.service'\n\n/**\n * NgModule for CapitalOS SDK.\n *\n * Use this module for NgModule-based Angular applications.\n * For standalone applications, use provideCapitalOs() instead.\n *\n * Usage:\n * ```typescript\n * @NgModule({\n * imports: [\n * CapitalOsModule.forRoot({\n * getToken: async () => {\n * const response = await fetch('/api/capitalos/token');\n * const data = await response.json();\n * return data.token;\n * },\n * enableLogging: true,\n * }),\n * ],\n * })\n * export class AppModule {}\n * ```\n */\n@NgModule({\n imports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n exports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],\n})\nexport class CapitalOsModule {\n static forRoot(config: CapitalOsConfig): ModuleWithProviders<CapitalOsModule> {\n return {\n ngModule: CapitalOsModule,\n providers: [{ provide: CAPITALOS_CONFIG, useValue: config }, TokenExchangeService, CapitalOsAuthService],\n }\n }\n}\n","/*\n * Public API Surface of @capitalos/angular\n */\n\n// Components\nexport { CardsAppComponent } from './lib/cards-app.component'\nexport { BillPayAppComponent } from './lib/billpay-app.component'\nexport { OnboardingComponent } from './lib/onboarding.component'\n\n// Services\nexport { CapitalOsAuthService } from './lib/capitalos-auth.service'\nexport type { AuthState } from './lib/capitalos-auth.service'\n\n// Provider (standalone)\nexport { provideCapitalOs, CAPITALOS_CONFIG } from './lib/provide-capitalos'\nexport type { CapitalOsConfig } from './lib/provide-capitalos'\n\n// Module (NgModule-based apps)\nexport { CapitalOsModule } from './lib/capitalos.module'\n\n// Re-export commonly used types from core\nexport type { ThemeColorScheme, Logger, TokenData, RawErrorDetails, Account, AccountStatus } from '@capitalos/core'\n\nexport { CapitalOSError, ErrorCode } from '@capitalos/core'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "0.2.1";
1
+ export declare const SDK_VERSION = "0.2.2";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capitalos/angular",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Angular SDK for CapitalOS",
5
5
  "publishConfig": {
6
6
  "directory": "../../dist/capitalos-angular"