{"version":3,"file":"angular-miniprogram-platform.mjs","sources":["../../src/library/platform/http/response.ts","../../src/library/platform/http/backend.ts","../../src/library/platform/http/provider.ts","../../src/library/platform/http/module.ts","../../src/library/platform/token.ts","../../src/library/platform/page.service.ts","../../src/library/platform/mini-program.module.ts","../../src/library/platform/platform-miniprogram.ts","../../src/library/platform/index.ts","../../src/library/platform/angular-miniprogram-platform.ts"],"sourcesContent":["import { HttpHeaders, HttpResponse } from 'angular-miniprogram/common/http';\n\nexport class MiniProgramHttpResponse<T> extends HttpResponse<T> {\n  /**\n   * 开发者服务器返回的 cookies，格式为字符串数组\n   */\n  readonly cookies: string[] | null;\n  /**\n   * 网络请求过程中一些调试信息，[查看详细说明](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/network.html)\n   */\n  readonly profile: WechatMiniprogram.RequestProfile | null;\n\n  /**\n   * Construct a new `WxHttpResponse`.\n   */\n  constructor(\n    init: {\n      body?: T | null;\n      headers?: HttpHeaders;\n      status?: number;\n      statusText?: string;\n      url?: string;\n      cookies?: string[];\n      profile?: WechatMiniprogram.RequestProfile;\n    } = {}\n  ) {\n    super(init);\n    this.cookies = init.cookies ?? null;\n    this.profile = init.profile ?? null;\n  }\n\n  clone(): MiniProgramHttpResponse<T>;\n  clone(update: {\n    headers?: HttpHeaders;\n    status?: number;\n    statusText?: string;\n    url?: string;\n    cookies?: string[];\n    profile?: WechatMiniprogram.RequestProfile;\n  }): MiniProgramHttpResponse<T>;\n  clone<V>(update: {\n    body?: V | null;\n    headers?: HttpHeaders;\n    status?: number;\n    statusText?: string;\n    url?: string;\n    cookies?: string[];\n    profile?: WechatMiniprogram.RequestProfile;\n  }): MiniProgramHttpResponse<V>;\n  clone(\n    update: {\n      body?: any | null;\n      headers?: HttpHeaders;\n      status?: number;\n      statusText?: string;\n      url?: string;\n      cookies?: string[];\n      profile?: WechatMiniprogram.RequestProfile;\n    } = {}\n  ): MiniProgramHttpResponse<any> {\n    return new MiniProgramHttpResponse<any>({\n      body: update.body !== undefined ? update.body : this.body,\n      headers: update.headers || this.headers,\n      status: update.status !== undefined ? update.status : this.status,\n      statusText: update.statusText || this.statusText,\n      url: update.url || this.url || undefined,\n      cookies: update.cookies || this.cookies || undefined,\n      profile: update.profile || this.profile || undefined,\n    });\n  }\n}\n\nexport class MiniProgramHttpDownloadResponse<T> extends HttpResponse<T> {\n  /** 用户文件路径 (本地路径)。传入 filePath 时会返回，跟传入的 filePath 一致 */\n  readonly filePath: string | null;\n  /** 临时文件路径 (本地路径)。没传入 filePath 指定文件存储路径时会返回，下载后的文件会存储到一个临时文件 */\n  readonly tempFilePath: string | null;\n  /**\n   * 网络请求过程中一些调试信息，[查看详细说明](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/network.html)\n   */\n  readonly profile: WechatMiniprogram.RequestProfile | null;\n\n  /**\n   * Construct a new `WxHttpDownloadResponse`.\n   */\n  constructor(\n    init: {\n      body?: T | null;\n      headers?: HttpHeaders;\n      status?: number;\n      statusText?: string;\n      url?: string;\n      filePath?: string;\n      tempFilePath?: string;\n      profile?: WechatMiniprogram.RequestProfile;\n    } = {}\n  ) {\n    super(init);\n    this.filePath = init.filePath ?? null;\n    this.tempFilePath = init.tempFilePath ?? null;\n    this.profile = init.profile ?? null;\n  }\n\n  clone(): MiniProgramHttpDownloadResponse<T>;\n  clone(update: {\n    headers?: HttpHeaders;\n    status?: number;\n    statusText?: string;\n    url?: string;\n    filePath?: string;\n    tempFilePath?: string;\n    profile?: WechatMiniprogram.RequestProfile;\n  }): MiniProgramHttpDownloadResponse<T>;\n  clone<V>(update: {\n    body?: V | null;\n    headers?: HttpHeaders;\n    status?: number;\n    statusText?: string;\n    url?: string;\n    filePath?: string;\n    tempFilePath?: string;\n    profile?: WechatMiniprogram.RequestProfile;\n  }): MiniProgramHttpDownloadResponse<V>;\n  clone(\n    update: {\n      body?: any | null;\n      headers?: HttpHeaders;\n      status?: number;\n      statusText?: string;\n      url?: string;\n      filePath?: string;\n      tempFilePath?: string;\n      profile?: WechatMiniprogram.RequestProfile;\n    } = {}\n  ): MiniProgramHttpDownloadResponse<any> {\n    return new MiniProgramHttpDownloadResponse<any>({\n      body: update.body !== undefined ? update.body : this.body,\n      headers: update.headers || this.headers,\n      status: update.status !== undefined ? update.status : this.status,\n      statusText: update.statusText || this.statusText,\n      url: update.url || this.url || undefined,\n      filePath: update.filePath || this.filePath || undefined,\n      tempFilePath: update.tempFilePath || this.tempFilePath || undefined,\n      profile: update.profile || this.profile || undefined,\n    });\n  }\n}\n","import {\n  HttpBackend,\n  HttpContextToken,\n  HttpDownloadProgressEvent,\n  HttpErrorResponse,\n  HttpEvent,\n  HttpEventType,\n  HttpHeaderResponse,\n  HttpHeaders,\n  HttpRequest,\n  HttpResponse,\n  HttpUploadProgressEvent,\n} from 'angular-miniprogram/common/http';\nimport { MiniProgramCore } from 'angular-miniprogram/platform/wx';\nimport { Observable, Observer } from 'rxjs';\nimport {\n  MiniProgramHttpDownloadResponse,\n  MiniProgramHttpResponse,\n} from './response';\ndeclare const Zone: any;\n/** Use this token to pass additional `wx.uploadFile()` parameter */\nexport const UPLOAD_FILE_TOKEN = new HttpContextToken<{\n  filePath?: string;\n  name?: string;\n  timeout?: number;\n}>(() => ({}));\n\n/** Use this token to pass additional `wx.downloadFile()` parameter */\nexport const DOWNLOAD_FILE_TOKEN = new HttpContextToken<{\n  filePath?: string;\n  timeout?: number;\n}>(() => ({}));\n\n/** Use this token to pass additional `wx.request()` parameter */\nexport const REQUSET_TOKEN = new HttpContextToken<{\n  enableCache?: boolean;\n  enableHttp2?: boolean;\n  enableQuic?: boolean;\n  timeout?: number;\n}>(() => ({}));\n\nexport class MiniprogramHttpBackend implements HttpBackend {\n  handle(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n    if (\n      request.method === 'POST' &&\n      request.context.has(UPLOAD_FILE_TOKEN)\n    ) {\n      return this.upload(request);\n    }\n\n    if (\n      request.method === 'GET' &&\n      request.context.has(DOWNLOAD_FILE_TOKEN)\n    ) {\n      return this.download(request);\n    }\n\n    return this.request(request);\n  }\n\n  /**\n   * wx upload file\n   * @param request\n   */\n  private upload(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n    return new Observable((observer: Observer<HttpEvent<any>>) => {\n      let currentZone = Zone.current;\n      // The response header event handler\n      const onHeadersReceived: WechatMiniprogram.DownloadTaskOnHeadersReceivedCallback = ({\n        header,\n      }) => {\n        currentZone.run(() => {\n          observer.next(\n            new HttpHeaderResponse({\n              url: request.url,\n              headers: new HttpHeaders(header),\n            })\n          );\n        });\n      };\n\n      // The upload progress event handler\n      const onUpProgressUpdate: WechatMiniprogram.UploadTaskOnProgressUpdateCallback =\n        ({ totalBytesSent, totalBytesExpectedToSend }) => {\n          currentZone.run(() => {\n            observer.next({\n              type: HttpEventType.UploadProgress,\n              loaded: totalBytesSent,\n              total: totalBytesExpectedToSend,\n            } as HttpUploadProgressEvent);\n          });\n        };\n\n      const { filePath, name, timeout } =\n        request.context.get(UPLOAD_FILE_TOKEN);\n      const task = MiniProgramCore.MINIPROGRAM_GLOBAL.uploadFile({\n        url: request.urlWithParams,\n        filePath: filePath!,\n        name: name!,\n        header: this.buildHeaders(request),\n        formData: request.body,\n        timeout: timeout,\n        success: ({ data, statusCode: status, errMsg: statusText }) => {\n          currentZone.run(() => {\n            let ok = status >= 200 && status < 300;\n            let body: any | null = null;\n\n            if (\n              request.responseType === 'json' &&\n              typeof data === 'string' &&\n              data !== ''\n            ) {\n              try {\n                body = JSON.parse(data);\n              } catch (error) {\n                if (ok) {\n                  ok = false;\n                  body = { error, text: body };\n                }\n              }\n            }\n\n            if (ok) {\n              observer.next(\n                new HttpResponse({\n                  url: request.url,\n                  body,\n                  status,\n                  statusText,\n                })\n              );\n              observer.complete();\n            } else {\n              observer.error(\n                new HttpErrorResponse({\n                  url: request.url,\n                  error: body,\n                  status,\n                  statusText,\n                })\n              );\n            }\n          });\n        },\n        fail: ({ errMsg }: WechatMiniprogram.GeneralCallbackResult) => {\n          currentZone.run(() => {\n            observer.error(\n              new HttpErrorResponse({\n                url: request.url,\n                statusText: errMsg,\n              })\n            );\n          });\n        },\n      });\n\n      observer.next({ type: HttpEventType.Sent });\n\n      if (request.reportProgress) {\n        task.onHeadersReceived(onHeadersReceived);\n        task.onProgressUpdate(onUpProgressUpdate);\n      }\n\n      return () => {\n        if (request.reportProgress) {\n          task.offHeadersReceived(onHeadersReceived);\n          task.offProgressUpdate(onUpProgressUpdate);\n        }\n\n        task.abort();\n      };\n    });\n  }\n\n  /**\n   * wx download file\n   * @param request\n   */\n  private download(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n    return new Observable((observer: Observer<HttpEvent<any>>) => {\n      let currentZone = Zone.current;\n      // The response header event handler\n      const onHeadersReceived: WechatMiniprogram.DownloadTaskOnHeadersReceivedCallback = ({\n        header,\n      }) => {\n        currentZone.run(() => {\n          observer.next(\n            new HttpHeaderResponse({\n              url: request.url,\n              headers: new HttpHeaders(header),\n            })\n          );\n        });\n      };\n\n      // The download progress event handler\n      const onDownProgressUpdate: WechatMiniprogram.DownloadTaskOnProgressUpdateCallback =\n        ({ totalBytesWritten, totalBytesExpectedToWrite }) => {\n          currentZone.run(() => {\n            observer.next({\n              type: HttpEventType.DownloadProgress,\n              loaded: totalBytesWritten,\n              total: totalBytesExpectedToWrite,\n            } as HttpDownloadProgressEvent);\n          });\n        };\n\n      const { filePath, timeout } = request.context.get(DOWNLOAD_FILE_TOKEN);\n      const task = MiniProgramCore.MINIPROGRAM_GLOBAL.downloadFile({\n        url: request.urlWithParams,\n        filePath: filePath,\n        header: this.buildHeaders(request),\n        timeout: timeout,\n        success: ({\n          statusCode: status,\n          errMsg: statusText,\n          filePath,\n          tempFilePath,\n          profile,\n        }) => {\n          Zone.run(() => {\n            const ok = status >= 200 && status < 300;\n\n            if (ok) {\n              observer.next(\n                new MiniProgramHttpDownloadResponse({\n                  url: request.url,\n                  status,\n                  statusText,\n                  filePath,\n                  tempFilePath,\n                  profile,\n                })\n              );\n              observer.complete();\n            } else {\n              observer.error(\n                new HttpErrorResponse({\n                  url: request.url,\n                  status,\n                  statusText,\n                })\n              );\n            }\n          });\n        },\n        fail: ({ errMsg }: WechatMiniprogram.GeneralCallbackResult) => {\n          currentZone.run(() => {\n            observer.error(\n              new HttpErrorResponse({\n                url: request.url,\n                statusText: errMsg,\n              })\n            );\n          });\n        },\n      });\n\n      observer.next({ type: HttpEventType.Sent });\n\n      if (request.reportProgress) {\n        task.onHeadersReceived(onHeadersReceived);\n        task.onProgressUpdate(onDownProgressUpdate);\n      }\n\n      return () => {\n        if (request.reportProgress) {\n          task.offHeadersReceived(onHeadersReceived);\n          task.offProgressUpdate(onDownProgressUpdate);\n        }\n\n        task.abort();\n      };\n    });\n  }\n\n  /**\n   * wx http request\n   * @param request\n   */\n  private request(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n    if (['PATCH', 'JSONP'].includes(request.method)) {\n      throw Error(\n        'WeChat MiniProgram does not support http method as ' + request.method\n      );\n    }\n    return new Observable((observer: Observer<HttpEvent<any>>) => {\n      let currentZone = Zone.current;\n      // The response header event handler\n      const onHeadersReceived: WechatMiniprogram.DownloadTaskOnHeadersReceivedCallback = ({\n        header,\n      }) => {\n        currentZone.run(() => {\n          observer.next(\n            new HttpHeaderResponse({\n              url: request.url,\n              headers: new HttpHeaders(header),\n            })\n          );\n        });\n      };\n      const task = MiniProgramCore.MINIPROGRAM_GLOBAL.request({\n        url: request.urlWithParams,\n        method: request.method as WechatMiniprogram.RequestOption['method'],\n        data: request.body,\n        header: this.buildHeaders(request),\n        // wx 从 responseType 中拆分出 dataType，这里需要处理一下\n        responseType:\n          request.responseType === 'arraybuffer'\n            ? request.responseType\n            : 'text',\n        dataType:\n          request.responseType === 'json' ? request.responseType : '其他',\n        success: ({\n          data,\n          header,\n          statusCode: status,\n          errMsg: statusText,\n          cookies,\n          profile,\n        }) => {\n          currentZone.run(() => {\n            const ok = status >= 200 && status < 300;\n            const headers = new HttpHeaders(header);\n\n            if (ok) {\n              observer.next(\n                new MiniProgramHttpResponse({\n                  url: request.url,\n                  body: data,\n                  status,\n                  statusText,\n                  headers,\n                  cookies,\n                  profile,\n                })\n              );\n              observer.complete();\n            } else {\n              observer.error(\n                new HttpErrorResponse({\n                  url: request.url,\n                  error: data,\n                  status,\n                  statusText,\n                  headers,\n                })\n              );\n            }\n          });\n        },\n        fail: ({ errMsg }: WechatMiniprogram.GeneralCallbackResult) => {\n          currentZone.run(() => {\n            observer.error(\n              new HttpErrorResponse({\n                url: request.url,\n                statusText: errMsg,\n              })\n            );\n          });\n        },\n        ...request.context.get(REQUSET_TOKEN),\n      });\n\n      observer.next({ type: HttpEventType.Sent });\n\n      if (request.reportProgress) {\n        task.onHeadersReceived(onHeadersReceived);\n      }\n\n      return () => {\n        if (request.reportProgress) {\n          task.offHeadersReceived(onHeadersReceived);\n        }\n\n        task.abort();\n      };\n    });\n  }\n\n  private buildHeaders(request: HttpRequest<any>): { [key: string]: string } {\n    return request.headers.keys().reduce((headers, name) => {\n      headers[name] = request.headers.getAll(name)!.join(',');\n      return headers;\n    }, {} as { [key: string]: string });\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { HttpBackend, HttpFeature, HttpFeatureKind, provideHttpClient as ngProvideHttpClient } from 'angular-miniprogram/common/http';\nimport { MiniprogramHttpBackend } from './backend';\n\nexport function provideHttpClient(...features: HttpFeature<HttpFeatureKind>[]): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    ngProvideHttpClient(...features),\n    MiniprogramHttpBackend,\n    { provide: HttpBackend, useExisting: MiniprogramHttpBackend }\n  ]);\n}\n","import { NgModule } from '@angular/core';\nimport { withInterceptorsFromDi } from 'angular-miniprogram/common/http';\nimport { provideHttpClient } from './provider';\n\n@NgModule({\n  providers: [\n    provideHttpClient(withInterceptorsFromDi())\n  ]\n})\nexport class HttpClientModule { }\n","import { InjectionToken } from '@angular/core';\n\nexport const APP_TOKEN = new InjectionToken<unknown>('APP_TOKEN');\nexport const MINIPROGRAM_GLOBAL_TOKEN = new InjectionToken<unknown>(\n  'MINIPROGRAM_GLOBAL_TOKEN'\n);\n","import {\n  ApplicationRef,\n  Inject,\n  Injectable,\n  Injector,\n  NgZone,\n  Type,\n  createNgModuleRef,\n} from '@angular/core';\nimport {\n  AppOptions,\n  MiniProgramComponentInstance,\n} from 'angular-miniprogram/platform/type';\nimport { PAGE_TOKEN } from 'angular-miniprogram/platform/wx';\nimport { APP_TOKEN } from './token';\n\n@Injectable()\nexport class PageService {\n  constructor(\n    private injector: Injector,\n    private applicationRef: ApplicationRef,\n    @Inject(APP_TOKEN) private app: AppOptions,\n    private ngZone: NgZone\n  ) {}\n\n  register() {\n    this.app.__ngStartPage = <M, C>(\n      module: Type<M>,\n      component: Type<C>,\n      miniProgramComponentInstance: MiniProgramComponentInstance\n    ) => {\n      return this.ngZone.run(() => {\n        const injector = Injector.create({\n          providers: [\n            { provide: PAGE_TOKEN, useValue: miniProgramComponentInstance },\n          ],\n          parent: this.injector,\n        });\n        const ngModuleRef = createNgModuleRef(module, injector);\n        const componentFactory =\n          ngModuleRef.componentFactoryResolver.resolveComponentFactory(\n            component\n          );\n        const componentRef = componentFactory.create(injector);\n        this.applicationRef.attachView(componentRef.hostView);\n        return { componentRef, ngModuleRef };\n      });\n    };\n    this.app.__ngStartPageResolve();\n  }\n}\n","import {\n  ApplicationModule,\n  ErrorHandler,\n  NgModule,\n  RendererFactory2,\n  ɵINJECTOR_SCOPE,\n} from '@angular/core';\nimport { CommonModule } from 'angular-miniprogram/common';\nimport {\n  ComponentFinderService,\n  MiniProgramRendererFactory,\n} from 'angular-miniprogram/platform/wx';\nimport { PageService } from './page.service';\n\nfunction errorHandler(): ErrorHandler {\n  return new ErrorHandler();\n}\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule, ApplicationModule],\n  providers: [\n    { provide: ɵINJECTOR_SCOPE, useValue: 'root' },\n    { provide: ErrorHandler, useFactory: errorHandler, deps: [] },\n    MiniProgramRendererFactory,\n    {\n      provide: RendererFactory2,\n      useExisting: MiniProgramRendererFactory,\n    },\n    PageService,\n    ComponentFinderService,\n  ],\n  exports: [CommonModule, ApplicationModule],\n})\nexport class MiniProgramModule {\n  constructor(pageService: PageService) {\n    pageService.register();\n  }\n}\n","import {\n  StaticProvider,\n  createPlatformFactory,\n  platformCore,\n} from '@angular/core';\nimport { MiniProgramCore } from 'angular-miniprogram/platform/wx';\nimport { APP_TOKEN, MINIPROGRAM_GLOBAL_TOKEN } from './token';\n\nexport function platformMiniProgram<T>(\n  extraProviders: StaticProvider[] = [],\n  app?: T\n) {\n  return createPlatformFactory(platformCore, 'miniProgram', [\n    { provide: APP_TOKEN, useValue: MiniProgramCore.loadApp(app || {}) },\n    {\n      provide: MINIPROGRAM_GLOBAL_TOKEN,\n      useValue: MiniProgramCore.MINIPROGRAM_GLOBAL,\n    },\n  ])(extraProviders);\n}\n","import { MiniProgramCore } from 'angular-miniprogram/platform/wx';\n\nexport * from './http';\nexport * from './mini-program.module';\nexport * from './platform-miniprogram';\nexport {\n  propertyChange,\n  ComponentFinderService,\n} from 'angular-miniprogram/platform/wx';\nexport const pageStartup = MiniProgramCore.pageStartup;\nexport const componentRegistry = MiniProgramCore.componentRegistry;\nexport * from './token';\nexport { PAGE_TOKEN } from 'angular-miniprogram/platform/wx';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ngProvideHttpClient","i1.PageService","ɵINJECTOR_SCOPE"],"mappings":"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"}