@payloadcms/next 3.0.0-alpha.8 → 3.0.0-beta.0
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.
- package/dist/config.js +2 -12
- package/dist/config.js.map +1 -0
- package/dist/elements/LeaveWithoutSaving/index.js +25 -76
- package/dist/elements/LeaveWithoutSaving/index.js.map +1 -0
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +11 -29
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -0
- package/dist/exports/layouts.d.ts +2 -0
- package/dist/exports/layouts.d.ts.map +1 -0
- package/dist/exports/layouts.js +3 -0
- package/dist/exports/layouts.js.map +1 -0
- package/dist/exports/routes.d.ts +3 -0
- package/dist/exports/routes.d.ts.map +1 -0
- package/dist/exports/routes.js +4 -0
- package/dist/exports/routes.js.map +1 -0
- package/dist/exports/utilities.d.ts +3 -0
- package/dist/exports/utilities.d.ts.map +1 -0
- package/dist/exports/utilities.js +4 -0
- package/dist/exports/utilities.js.map +1 -0
- package/dist/exports/views.d.ts +4 -0
- package/dist/exports/views.d.ts.map +1 -0
- package/dist/exports/views.js +5 -0
- package/dist/exports/views.js.map +1 -0
- package/dist/index.js +3 -35
- package/dist/index.js.map +1 -0
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +62 -77
- package/dist/layouts/Root/index.js.map +1 -0
- package/dist/next-fileupload/fileFactory.d.ts +2 -2
- package/dist/next-fileupload/fileFactory.d.ts.map +1 -1
- package/dist/next-fileupload/fileFactory.js +9 -19
- package/dist/next-fileupload/fileFactory.js.map +1 -0
- package/dist/next-fileupload/handlers.d.ts +2 -2
- package/dist/next-fileupload/handlers.d.ts.map +1 -1
- package/dist/next-fileupload/handlers.js +25 -89
- package/dist/next-fileupload/handlers.js.map +1 -0
- package/dist/next-fileupload/index.d.ts +1 -1
- package/dist/next-fileupload/index.js +10 -25
- package/dist/next-fileupload/index.js.map +1 -0
- package/dist/next-fileupload/isEligibleRequest.js +2 -12
- package/dist/next-fileupload/isEligibleRequest.js.map +1 -0
- package/dist/next-fileupload/processMultipart.d.ts +1 -1
- package/dist/next-fileupload/processMultipart.d.ts.map +1 -1
- package/dist/next-fileupload/processMultipart.js +33 -46
- package/dist/next-fileupload/processMultipart.js.map +1 -0
- package/dist/next-fileupload/processNested.js +4 -14
- package/dist/next-fileupload/processNested.js.map +1 -0
- package/dist/next-fileupload/uploadTimer.js +2 -12
- package/dist/next-fileupload/uploadTimer.js.map +1 -0
- package/dist/next-fileupload/utilities.d.ts +1 -1
- package/dist/next-fileupload/utilities.d.ts.map +1 -1
- package/dist/next-fileupload/utilities.js +31 -76
- package/dist/next-fileupload/utilities.js.map +1 -0
- package/dist/next-stream-file/index.d.ts +4 -0
- package/dist/next-stream-file/index.d.ts.map +1 -1
- package/dist/next-stream-file/index.js +6 -21
- package/dist/next-stream-file/index.js.map +1 -0
- package/dist/prod/payload/favicon.svg +15 -0
- package/dist/prod/payload/og-image.png +0 -0
- package/dist/prod/styles.css +1 -0
- package/dist/routes/graphql/handler.d.ts.map +1 -1
- package/dist/routes/graphql/handler.js +19 -36
- package/dist/routes/graphql/handler.js.map +1 -0
- package/dist/routes/graphql/index.d.ts +2 -2
- package/dist/routes/graphql/index.d.ts.map +1 -1
- package/dist/routes/graphql/index.js +3 -21
- package/dist/routes/graphql/index.js.map +1 -0
- package/dist/routes/graphql/playground.js +6 -16
- package/dist/routes/graphql/playground.js.map +1 -0
- package/dist/routes/index.d.ts +2 -3
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +3 -37
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/rest/auth/access.d.ts +1 -1
- package/dist/routes/rest/auth/access.d.ts.map +1 -1
- package/dist/routes/rest/auth/access.js +6 -21
- package/dist/routes/rest/auth/access.js.map +1 -0
- package/dist/routes/rest/auth/forgotPassword.d.ts +1 -1
- package/dist/routes/rest/auth/forgotPassword.d.ts.map +1 -1
- package/dist/routes/rest/auth/forgotPassword.js +6 -21
- package/dist/routes/rest/auth/forgotPassword.js.map +1 -0
- package/dist/routes/rest/auth/init.d.ts +1 -1
- package/dist/routes/rest/auth/init.d.ts.map +1 -1
- package/dist/routes/rest/auth/init.js +4 -14
- package/dist/routes/rest/auth/init.js.map +1 -0
- package/dist/routes/rest/auth/login.d.ts +1 -1
- package/dist/routes/rest/auth/login.d.ts.map +1 -1
- package/dist/routes/rest/auth/login.js +10 -25
- package/dist/routes/rest/auth/login.js.map +1 -0
- package/dist/routes/rest/auth/logout.d.ts +1 -1
- package/dist/routes/rest/auth/logout.d.ts.map +1 -1
- package/dist/routes/rest/auth/logout.js +9 -24
- package/dist/routes/rest/auth/logout.js.map +1 -0
- package/dist/routes/rest/auth/me.d.ts +1 -1
- package/dist/routes/rest/auth/me.d.ts.map +1 -1
- package/dist/routes/rest/auth/me.js +8 -23
- package/dist/routes/rest/auth/me.js.map +1 -0
- package/dist/routes/rest/auth/refresh.d.ts +1 -1
- package/dist/routes/rest/auth/refresh.d.ts.map +1 -1
- package/dist/routes/rest/auth/refresh.js +11 -25
- package/dist/routes/rest/auth/refresh.js.map +1 -0
- package/dist/routes/rest/auth/registerFirstUser.d.ts +1 -1
- package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
- package/dist/routes/rest/auth/registerFirstUser.js +12 -25
- package/dist/routes/rest/auth/registerFirstUser.js.map +1 -0
- package/dist/routes/rest/auth/resetPassword.d.ts +1 -1
- package/dist/routes/rest/auth/resetPassword.d.ts.map +1 -1
- package/dist/routes/rest/auth/resetPassword.js +8 -23
- package/dist/routes/rest/auth/resetPassword.js.map +1 -0
- package/dist/routes/rest/auth/unlock.d.ts +1 -1
- package/dist/routes/rest/auth/unlock.d.ts.map +1 -1
- package/dist/routes/rest/auth/unlock.js +6 -21
- package/dist/routes/rest/auth/unlock.js.map +1 -0
- package/dist/routes/rest/auth/verifyEmail.d.ts +1 -1
- package/dist/routes/rest/auth/verifyEmail.d.ts.map +1 -1
- package/dist/routes/rest/auth/verifyEmail.js +6 -21
- package/dist/routes/rest/auth/verifyEmail.js.map +1 -0
- package/dist/routes/rest/buildFormState.d.ts +3 -3
- package/dist/routes/rest/buildFormState.d.ts.map +1 -1
- package/dist/routes/rest/buildFormState.js +143 -79
- package/dist/routes/rest/buildFormState.js.map +1 -0
- package/dist/routes/rest/checkEndpoints.d.ts.map +1 -1
- package/dist/routes/rest/checkEndpoints.js +4 -19
- package/dist/routes/rest/checkEndpoints.js.map +1 -0
- package/dist/routes/rest/collections/create.d.ts +1 -1
- package/dist/routes/rest/collections/create.d.ts.map +1 -1
- package/dist/routes/rest/collections/create.js +10 -24
- package/dist/routes/rest/collections/create.js.map +1 -0
- package/dist/routes/rest/collections/delete.d.ts +1 -1
- package/dist/routes/rest/collections/delete.d.ts.map +1 -1
- package/dist/routes/rest/collections/delete.js +13 -31
- package/dist/routes/rest/collections/delete.js.map +1 -0
- package/dist/routes/rest/collections/deleteByID.d.ts +1 -1
- package/dist/routes/rest/collections/deleteByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/deleteByID.js +9 -24
- package/dist/routes/rest/collections/deleteByID.js.map +1 -0
- package/dist/routes/rest/collections/docAccess.d.ts +1 -1
- package/dist/routes/rest/collections/docAccess.d.ts.map +1 -1
- package/dist/routes/rest/collections/docAccess.js +6 -21
- package/dist/routes/rest/collections/docAccess.js.map +1 -0
- package/dist/routes/rest/collections/duplicate.d.ts +3 -0
- package/dist/routes/rest/collections/duplicate.d.ts.map +1 -0
- package/dist/routes/rest/collections/duplicate.js +28 -0
- package/dist/routes/rest/collections/duplicate.js.map +1 -0
- package/dist/routes/rest/collections/find.d.ts +1 -1
- package/dist/routes/rest/collections/find.d.ts.map +1 -1
- package/dist/routes/rest/collections/find.js +11 -29
- package/dist/routes/rest/collections/find.js.map +1 -0
- package/dist/routes/rest/collections/findByID.d.ts +1 -1
- package/dist/routes/rest/collections/findByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/findByID.js +8 -23
- package/dist/routes/rest/collections/findByID.js.map +1 -0
- package/dist/routes/rest/collections/findVersionByID.d.ts +1 -1
- package/dist/routes/rest/collections/findVersionByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/findVersionByID.js +8 -23
- package/dist/routes/rest/collections/findVersionByID.js.map +1 -0
- package/dist/routes/rest/collections/findVersions.d.ts +1 -1
- package/dist/routes/rest/collections/findVersions.d.ts.map +1 -1
- package/dist/routes/rest/collections/findVersions.js +11 -29
- package/dist/routes/rest/collections/findVersions.js.map +1 -0
- package/dist/routes/rest/collections/preview.d.ts +3 -0
- package/dist/routes/rest/collections/preview.d.ts.map +1 -0
- package/dist/routes/rest/collections/preview.js +36 -0
- package/dist/routes/rest/collections/preview.js.map +1 -0
- package/dist/routes/rest/collections/restoreVersion.d.ts +1 -1
- package/dist/routes/rest/collections/restoreVersion.d.ts.map +1 -1
- package/dist/routes/rest/collections/restoreVersion.js +8 -23
- package/dist/routes/rest/collections/restoreVersion.js.map +1 -0
- package/dist/routes/rest/collections/update.d.ts +1 -1
- package/dist/routes/rest/collections/update.d.ts.map +1 -1
- package/dist/routes/rest/collections/update.js +13 -31
- package/dist/routes/rest/collections/update.js.map +1 -0
- package/dist/routes/rest/collections/updateByID.d.ts +1 -1
- package/dist/routes/rest/collections/updateByID.d.ts.map +1 -1
- package/dist/routes/rest/collections/updateByID.js +8 -23
- package/dist/routes/rest/collections/updateByID.js.map +1 -0
- package/dist/routes/rest/files/checkFileAccess.d.ts +7 -0
- package/dist/routes/rest/files/checkFileAccess.d.ts.map +1 -0
- package/dist/routes/rest/files/checkFileAccess.js +50 -0
- package/dist/routes/rest/files/checkFileAccess.js.map +1 -0
- package/dist/routes/rest/files/getFile.d.ts +9 -0
- package/dist/routes/rest/files/getFile.d.ts.map +1 -0
- package/dist/routes/rest/files/getFile.js +52 -0
- package/dist/routes/rest/files/getFile.js.map +1 -0
- package/dist/routes/rest/globals/docAccess.d.ts +1 -1
- package/dist/routes/rest/globals/docAccess.d.ts.map +1 -1
- package/dist/routes/rest/globals/docAccess.js +6 -21
- package/dist/routes/rest/globals/docAccess.js.map +1 -0
- package/dist/routes/rest/globals/findOne.d.ts +1 -1
- package/dist/routes/rest/globals/findOne.d.ts.map +1 -1
- package/dist/routes/rest/globals/findOne.js +10 -25
- package/dist/routes/rest/globals/findOne.js.map +1 -0
- package/dist/routes/rest/globals/findVersionByID.d.ts +1 -1
- package/dist/routes/rest/globals/findVersionByID.d.ts.map +1 -1
- package/dist/routes/rest/globals/findVersionByID.js +8 -23
- package/dist/routes/rest/globals/findVersionByID.js.map +1 -0
- package/dist/routes/rest/globals/findVersions.d.ts +1 -1
- package/dist/routes/rest/globals/findVersions.d.ts.map +1 -1
- package/dist/routes/rest/globals/findVersions.js +11 -29
- package/dist/routes/rest/globals/findVersions.js.map +1 -0
- package/dist/routes/rest/globals/preview.d.ts +3 -0
- package/dist/routes/rest/globals/preview.d.ts.map +1 -0
- package/dist/routes/rest/globals/preview.js +35 -0
- package/dist/routes/rest/globals/preview.js.map +1 -0
- package/dist/routes/rest/globals/restoreVersion.d.ts +1 -1
- package/dist/routes/rest/globals/restoreVersion.d.ts.map +1 -1
- package/dist/routes/rest/globals/restoreVersion.js +8 -23
- package/dist/routes/rest/globals/restoreVersion.js.map +1 -0
- package/dist/routes/rest/globals/update.d.ts +1 -1
- package/dist/routes/rest/globals/update.d.ts.map +1 -1
- package/dist/routes/rest/globals/update.js +10 -25
- package/dist/routes/rest/globals/update.js.map +1 -0
- package/dist/routes/rest/index.d.ts.map +1 -1
- package/dist/routes/rest/index.js +129 -122
- package/dist/routes/rest/index.js.map +1 -0
- package/dist/routes/rest/{RouteError.d.ts → routeError.d.ts} +3 -3
- package/dist/routes/rest/routeError.d.ts.map +1 -0
- package/dist/routes/rest/routeError.js +93 -0
- package/dist/routes/rest/routeError.js.map +1 -0
- package/dist/routes/rest/types.js +2 -5
- package/dist/routes/rest/types.js.map +1 -0
- package/dist/scss/app.scss +2 -2
- package/dist/utilities/buildFieldSchemaMap/index.d.ts +4 -0
- package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -0
- package/dist/utilities/buildFieldSchemaMap/index.js +28 -0
- package/dist/utilities/buildFieldSchemaMap/index.js.map +1 -0
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts +14 -0
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -0
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js +72 -0
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -0
- package/dist/utilities/buildFieldSchemaMap/types.d.ts +3 -0
- package/dist/utilities/buildFieldSchemaMap/types.d.ts.map +1 -0
- package/dist/utilities/buildFieldSchemaMap/types.js +3 -0
- package/dist/utilities/buildFieldSchemaMap/types.js.map +1 -0
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +29 -32
- package/dist/utilities/createPayloadRequest.js.map +1 -0
- package/dist/utilities/getDataAndFile.js +6 -16
- package/dist/utilities/getDataAndFile.js.map +1 -0
- package/dist/utilities/getNextI18n.d.ts +2 -2
- package/dist/utilities/getNextI18n.d.ts.map +1 -1
- package/dist/utilities/getNextI18n.js +10 -24
- package/dist/utilities/getNextI18n.js.map +1 -0
- package/dist/utilities/getPayloadHMR.d.ts +4 -0
- package/dist/utilities/getPayloadHMR.d.ts.map +1 -0
- package/dist/utilities/getPayloadHMR.js +75 -0
- package/dist/utilities/getPayloadHMR.js.map +1 -0
- package/dist/utilities/getRequestLanguage.d.ts +6 -3
- package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
- package/dist/utilities/getRequestLanguage.js +6 -16
- package/dist/utilities/getRequestLanguage.js.map +1 -0
- package/dist/utilities/getRequestLocales.js +2 -12
- package/dist/utilities/getRequestLocales.js.map +1 -0
- package/dist/utilities/initPage.d.ts +4 -16
- package/dist/utilities/initPage.d.ts.map +1 -1
- package/dist/utilities/initPage.js +70 -54
- package/dist/utilities/initPage.js.map +1 -0
- package/dist/utilities/meta.js +5 -15
- package/dist/utilities/meta.js.map +1 -0
- package/dist/utilities/timestamp.d.ts +2 -0
- package/dist/utilities/timestamp.d.ts.map +1 -0
- package/dist/utilities/timestamp.js +7 -0
- package/dist/utilities/timestamp.js.map +1 -0
- package/dist/views/API/RenderJSON/index.js +17 -69
- package/dist/views/API/RenderJSON/index.js.map +1 -0
- package/dist/views/API/index.client.d.ts +1 -2
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +58 -106
- package/dist/views/API/index.client.js.map +1 -0
- package/dist/views/API/index.d.ts +2 -3
- package/dist/views/API/index.d.ts.map +1 -1
- package/dist/views/API/index.js +5 -25
- package/dist/views/API/index.js.map +1 -0
- package/dist/views/API/meta.d.ts +1 -1
- package/dist/views/API/meta.d.ts.map +1 -1
- package/dist/views/API/meta.js +4 -14
- package/dist/views/API/meta.js.map +1 -0
- package/dist/views/Account/Settings/index.d.ts.map +1 -1
- package/dist/views/Account/Settings/index.js +16 -30
- package/dist/views/Account/Settings/index.js.map +1 -0
- package/dist/views/Account/ToggleTheme/index.js +10 -59
- package/dist/views/Account/ToggleTheme/index.js.map +1 -0
- package/dist/views/Account/index.d.ts +3 -12
- package/dist/views/Account/index.d.ts.map +1 -1
- package/dist/views/Account/index.js +43 -152
- package/dist/views/Account/index.js.map +1 -0
- package/dist/views/Account/meta.d.ts +3 -0
- package/dist/views/Account/meta.d.ts.map +1 -0
- package/dist/views/Account/meta.js +11 -0
- package/dist/views/Account/meta.js.map +1 -0
- package/dist/views/CreateFirstUser/index.client.d.ts +2 -0
- package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.client.js +15 -22
- package/dist/views/CreateFirstUser/index.client.js.map +1 -0
- package/dist/views/CreateFirstUser/index.d.ts +3 -17
- package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.js +23 -64
- package/dist/views/CreateFirstUser/index.js.map +1 -0
- package/dist/views/CreateFirstUser/meta.d.ts +3 -0
- package/dist/views/CreateFirstUser/meta.d.ts.map +1 -0
- package/dist/views/CreateFirstUser/meta.js +11 -0
- package/dist/views/CreateFirstUser/meta.js.map +1 -0
- package/dist/views/Dashboard/Default/index.client.d.ts +4 -2
- package/dist/views/Dashboard/Default/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/index.client.js +35 -82
- package/dist/views/Dashboard/Default/index.client.js.map +1 -0
- package/dist/views/Dashboard/Default/index.d.ts +4 -3
- package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/index.js +17 -31
- package/dist/views/Dashboard/Default/index.js.map +1 -0
- package/dist/views/Dashboard/index.d.ts +3 -14
- package/dist/views/Dashboard/index.d.ts.map +1 -1
- package/dist/views/Dashboard/index.js +18 -113
- package/dist/views/Dashboard/index.js.map +1 -0
- package/dist/views/Dashboard/meta.d.ts +3 -0
- package/dist/views/Dashboard/meta.d.ts.map +1 -0
- package/dist/views/Dashboard/meta.js +11 -0
- package/dist/views/Dashboard/meta.js.map +1 -0
- package/dist/views/Document/getCustomViewByKey.d.ts +2 -2
- package/dist/views/Document/getCustomViewByKey.d.ts.map +1 -1
- package/dist/views/Document/getCustomViewByKey.js +2 -12
- package/dist/views/Document/getCustomViewByKey.js.map +1 -0
- package/dist/views/Document/getCustomViewByRoute.d.ts +8 -0
- package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -0
- package/dist/views/Document/getCustomViewByRoute.js +22 -0
- package/dist/views/Document/getCustomViewByRoute.js.map +1 -0
- package/dist/views/Document/getMetaBySegment.d.ts +6 -16
- package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
- package/dist/views/Document/getMetaBySegment.js +39 -86
- package/dist/views/Document/getMetaBySegment.js.map +1 -0
- package/dist/views/Document/getViewsFromConfig.d.ts +12 -9
- package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
- package/dist/views/Document/getViewsFromConfig.js +198 -121
- package/dist/views/Document/getViewsFromConfig.js.map +1 -0
- package/dist/views/Document/index.d.ts +4 -22
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +115 -192
- package/dist/views/Document/index.js.map +1 -0
- package/dist/views/Document/meta.d.ts +3 -0
- package/dist/views/Document/meta.d.ts.map +1 -0
- package/dist/views/Document/meta.js +4 -0
- package/dist/views/Document/meta.js.map +1 -0
- package/dist/views/Edit/Default/Auth/APIKey.d.ts +1 -2
- package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/APIKey.js +37 -78
- package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -0
- package/dist/views/Edit/Default/Auth/index.d.ts +2 -3
- package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/Auth/index.js +42 -93
- package/dist/views/Edit/Default/Auth/index.js.map +1 -0
- package/dist/views/Edit/Default/Auth/types.js +2 -5
- package/dist/views/Edit/Default/Auth/types.js.map +1 -0
- package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts +5 -4
- package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/SetDocumentTitle/index.js +27 -39
- package/dist/views/Edit/Default/SetDocumentTitle/index.js.map +1 -0
- package/dist/views/Edit/Default/SetStepNav/index.d.ts +1 -2
- package/dist/views/Edit/Default/SetStepNav/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/SetStepNav/index.js +17 -23
- package/dist/views/Edit/Default/SetStepNav/index.js.map +1 -0
- package/dist/views/Edit/Default/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/index.js +109 -109
- package/dist/views/Edit/Default/index.js.map +1 -0
- package/dist/views/Edit/Default/types.js +2 -5
- package/dist/views/Edit/Default/types.js.map +1 -0
- package/dist/views/Edit/index.client.d.ts +1 -2
- package/dist/views/Edit/index.client.d.ts.map +1 -1
- package/dist/views/Edit/index.client.js +11 -94
- package/dist/views/Edit/index.client.js.map +1 -0
- package/dist/views/Edit/index.d.ts +2 -3
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +5 -25
- package/dist/views/Edit/index.js.map +1 -0
- package/dist/views/Edit/meta.d.ts +1 -1
- package/dist/views/Edit/meta.d.ts.map +1 -1
- package/dist/views/Edit/meta.js +11 -21
- package/dist/views/Edit/meta.js.map +1 -0
- package/dist/views/Edit/sanitizeEditViewProps.d.ts +1 -2
- package/dist/views/Edit/sanitizeEditViewProps.d.ts.map +1 -1
- package/dist/views/Edit/sanitizeEditViewProps.js +5 -18
- package/dist/views/Edit/sanitizeEditViewProps.js.map +1 -0
- package/dist/views/ForgotPassword/index.d.ts +4 -12
- package/dist/views/ForgotPassword/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/index.js +27 -91
- package/dist/views/ForgotPassword/index.js.map +1 -0
- package/dist/views/ForgotPassword/meta.d.ts +3 -0
- package/dist/views/ForgotPassword/meta.d.ts.map +1 -0
- package/dist/views/ForgotPassword/meta.js +11 -0
- package/dist/views/ForgotPassword/meta.js.map +1 -0
- package/dist/views/List/Default/index.d.ts.map +1 -1
- package/dist/views/List/Default/index.js +80 -109
- package/dist/views/List/Default/index.js.map +1 -0
- package/dist/views/List/Default/types.d.ts +3 -2
- package/dist/views/List/Default/types.d.ts.map +1 -1
- package/dist/views/List/Default/types.js +2 -5
- package/dist/views/List/Default/types.js.map +1 -0
- package/dist/views/List/index.d.ts +3 -20
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +69 -114
- package/dist/views/List/index.js.map +1 -0
- package/dist/views/List/meta.d.ts +7 -0
- package/dist/views/List/meta.d.ts.map +1 -0
- package/dist/views/List/meta.js +19 -0
- package/dist/views/List/meta.js.map +1 -0
- package/dist/views/LivePreview/Context/collisionDetection.js +6 -14
- package/dist/views/LivePreview/Context/collisionDetection.js.map +1 -0
- package/dist/views/LivePreview/Context/context.d.ts +2 -2
- package/dist/views/LivePreview/Context/context.d.ts.map +1 -1
- package/dist/views/LivePreview/Context/context.js +4 -22
- package/dist/views/LivePreview/Context/context.js.map +1 -0
- package/dist/views/LivePreview/Context/index.d.ts +5 -3
- package/dist/views/LivePreview/Context/index.d.ts.map +1 -1
- package/dist/views/LivePreview/Context/index.js +38 -93
- package/dist/views/LivePreview/Context/index.js.map +1 -0
- package/dist/views/LivePreview/Context/sizeReducer.js +2 -12
- package/dist/views/LivePreview/Context/sizeReducer.js.map +1 -0
- package/dist/views/LivePreview/Device/index.js +10 -61
- package/dist/views/LivePreview/Device/index.js.map +1 -0
- package/dist/views/LivePreview/DeviceContainer/index.js +6 -21
- package/dist/views/LivePreview/DeviceContainer/index.js.map +1 -0
- package/dist/views/LivePreview/IFrame/index.d.ts +4 -3
- package/dist/views/LivePreview/IFrame/index.d.ts.map +1 -1
- package/dist/views/LivePreview/IFrame/index.js +6 -58
- package/dist/views/LivePreview/IFrame/index.js.map +1 -0
- package/dist/views/LivePreview/Preview/index.d.ts +1 -1
- package/dist/views/LivePreview/Preview/index.d.ts.map +1 -1
- package/dist/views/LivePreview/Preview/index.js +23 -72
- package/dist/views/LivePreview/Preview/index.js.map +1 -0
- package/dist/views/LivePreview/Toolbar/Controls/index.d.ts +1 -1
- package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +1 -1
- package/dist/views/LivePreview/Toolbar/Controls/index.js +24 -37
- package/dist/views/LivePreview/Toolbar/Controls/index.js.map +1 -0
- package/dist/views/LivePreview/Toolbar/SizeInput/index.js +9 -61
- package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +1 -0
- package/dist/views/LivePreview/Toolbar/index.d.ts +1 -1
- package/dist/views/LivePreview/Toolbar/index.d.ts.map +1 -1
- package/dist/views/LivePreview/Toolbar/index.js +16 -32
- package/dist/views/LivePreview/Toolbar/index.js.map +1 -0
- package/dist/views/LivePreview/ToolbarArea/index.js +6 -22
- package/dist/views/LivePreview/ToolbarArea/index.js.map +1 -0
- package/dist/views/LivePreview/index.client.d.ts +2 -3
- package/dist/views/LivePreview/index.client.d.ts.map +1 -1
- package/dist/views/LivePreview/index.client.js +83 -106
- package/dist/views/LivePreview/index.client.js.map +1 -0
- package/dist/views/LivePreview/index.d.ts +2 -2
- package/dist/views/LivePreview/index.d.ts.map +1 -1
- package/dist/views/LivePreview/index.js +34 -30
- package/dist/views/LivePreview/index.js.map +1 -0
- package/dist/views/LivePreview/meta.d.ts +1 -1
- package/dist/views/LivePreview/meta.d.ts.map +1 -1
- package/dist/views/LivePreview/meta.js +11 -21
- package/dist/views/LivePreview/meta.js.map +1 -0
- package/dist/views/LivePreview/usePopupWindow.d.ts.map +1 -1
- package/dist/views/LivePreview/usePopupWindow.js +11 -21
- package/dist/views/LivePreview/usePopupWindow.js.map +1 -0
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +22 -36
- package/dist/views/Login/LoginForm/index.js.map +1 -0
- package/dist/views/Login/index.d.ts +4 -15
- package/dist/views/Login/index.d.ts.map +1 -1
- package/dist/views/Login/index.js +16 -88
- package/dist/views/Login/index.js.map +1 -0
- package/dist/views/Login/meta.d.ts +3 -0
- package/dist/views/Login/meta.d.ts.map +1 -0
- package/dist/views/Login/meta.js +11 -0
- package/dist/views/Login/meta.js.map +1 -0
- package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
- package/dist/views/Logout/LogoutClient.js +15 -69
- package/dist/views/Logout/LogoutClient.js.map +1 -0
- package/dist/views/Logout/index.d.ts +5 -17
- package/dist/views/Logout/index.d.ts.map +1 -1
- package/dist/views/Logout/index.js +12 -53
- package/dist/views/Logout/index.js.map +1 -0
- package/dist/views/Logout/meta.d.ts +3 -0
- package/dist/views/Logout/meta.d.ts.map +1 -0
- package/dist/views/Logout/meta.js +11 -0
- package/dist/views/Logout/meta.js.map +1 -0
- package/dist/views/NotFound/index.client.d.ts +6 -0
- package/dist/views/NotFound/index.client.d.ts.map +1 -0
- package/dist/views/NotFound/index.client.js +41 -0
- package/dist/views/NotFound/index.client.js.map +1 -0
- package/dist/views/NotFound/index.d.ts +26 -5
- package/dist/views/NotFound/index.d.ts.map +1 -1
- package/dist/views/NotFound/index.js +34 -45
- package/dist/views/NotFound/index.js.map +1 -0
- package/dist/views/NotFound/index.scss +1 -0
- package/dist/views/NotFound/meta.d.ts +8 -0
- package/dist/views/NotFound/meta.d.ts.map +1 -0
- package/dist/views/NotFound/meta.js +11 -0
- package/dist/views/NotFound/meta.js.map +1 -0
- package/dist/views/ResetPassword/index.d.ts +4 -17
- package/dist/views/ResetPassword/index.d.ts.map +1 -1
- package/dist/views/ResetPassword/index.js +34 -62
- package/dist/views/ResetPassword/index.js.map +1 -0
- package/dist/views/ResetPassword/meta.d.ts +3 -0
- package/dist/views/ResetPassword/meta.d.ts.map +1 -0
- package/dist/views/ResetPassword/meta.js +11 -0
- package/dist/views/ResetPassword/meta.js.map +1 -0
- package/dist/views/Root/getCustomViewByRoute.d.ts +6 -0
- package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -0
- package/dist/views/Root/getCustomViewByRoute.js +19 -0
- package/dist/views/Root/getCustomViewByRoute.js.map +1 -0
- package/dist/views/Root/getViewFromConfig.d.ts +18 -0
- package/dist/views/Root/getViewFromConfig.d.ts.map +1 -0
- package/dist/views/Root/getViewFromConfig.js +138 -0
- package/dist/views/Root/getViewFromConfig.js.map +1 -0
- package/dist/views/Root/index.d.ts +13 -6
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +43 -226
- package/dist/views/Root/index.js.map +1 -0
- package/dist/views/Root/isPathMatchingRoute.d.ts +8 -0
- package/dist/views/Root/isPathMatchingRoute.d.ts.map +1 -0
- package/dist/views/Root/isPathMatchingRoute.js +16 -0
- package/dist/views/Root/isPathMatchingRoute.js.map +1 -0
- package/dist/views/Root/meta.d.ts +14 -0
- package/dist/views/Root/meta.d.ts.map +1 -0
- package/dist/views/Root/meta.js +159 -0
- package/dist/views/Root/meta.js.map +1 -0
- package/dist/views/Unauthorized/index.d.ts +4 -11
- package/dist/views/Unauthorized/index.d.ts.map +1 -1
- package/dist/views/Unauthorized/index.js +18 -42
- package/dist/views/Unauthorized/index.js.map +1 -0
- package/dist/views/Unauthorized/index.scss +36 -0
- package/dist/views/Unauthorized/meta.d.ts +3 -0
- package/dist/views/Unauthorized/meta.d.ts.map +1 -0
- package/dist/views/Unauthorized/meta.js +11 -0
- package/dist/views/Unauthorized/meta.js.map +1 -0
- package/dist/views/Verify/index.d.ts +4 -17
- package/dist/views/Verify/index.d.ts.map +1 -1
- package/dist/views/Verify/index.js +14 -55
- package/dist/views/Verify/index.js.map +1 -0
- package/dist/views/Verify/meta.d.ts +3 -0
- package/dist/views/Verify/meta.d.ts.map +1 -0
- package/dist/views/Verify/meta.js +11 -0
- package/dist/views/Verify/meta.js.map +1 -0
- package/dist/views/Version/Default/SetStepNav.d.ts +4 -3
- package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
- package/dist/views/Version/Default/SetStepNav.js +36 -28
- package/dist/views/Version/Default/SetStepNav.js.map +1 -0
- package/dist/views/Version/Default/index.d.ts +1 -1
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +53 -93
- package/dist/views/Version/Default/index.js.map +1 -0
- package/dist/views/Version/Default/types.d.ts +4 -9
- package/dist/views/Version/Default/types.d.ts.map +1 -1
- package/dist/views/Version/Default/types.js +2 -5
- package/dist/views/Version/Default/types.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/Label/index.js +4 -20
- package/dist/views/Version/RenderFieldsToDiff/Label/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +31 -47
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +10 -26
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +20 -35
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js +7 -62
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +6 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +16 -31
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +6 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +11 -26
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js +7 -62
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +11 -27
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/diffMethods.js +2 -12
- package/dist/views/Version/RenderFieldsToDiff/fields/diffMethods.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +54 -19
- package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/index.js +25 -40
- package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/styles.js +2 -12
- package/dist/views/Version/RenderFieldsToDiff/fields/styles.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/types.js +2 -5
- package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/index.d.ts +1 -1
- package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/index.js +28 -43
- package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -0
- package/dist/views/Version/RenderFieldsToDiff/types.d.ts +2 -2
- package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/types.js +2 -5
- package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -0
- package/dist/views/Version/Restore/index.d.ts +1 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +24 -71
- package/dist/views/Version/Restore/index.js.map +1 -0
- package/dist/views/Version/Restore/types.d.ts +1 -1
- package/dist/views/Version/Restore/types.d.ts.map +1 -1
- package/dist/views/Version/Restore/types.js +2 -5
- package/dist/views/Version/Restore/types.js.map +1 -0
- package/dist/views/Version/SelectComparison/index.d.ts +1 -1
- package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
- package/dist/views/Version/SelectComparison/index.js +53 -90
- package/dist/views/Version/SelectComparison/index.js.map +1 -0
- package/dist/views/Version/SelectComparison/types.d.ts +1 -1
- package/dist/views/Version/SelectComparison/types.d.ts.map +1 -1
- package/dist/views/Version/SelectComparison/types.js +2 -5
- package/dist/views/Version/SelectComparison/types.js.map +1 -0
- package/dist/views/Version/SelectLocales/index.d.ts +1 -1
- package/dist/views/Version/SelectLocales/index.d.ts.map +1 -1
- package/dist/views/Version/SelectLocales/index.js +11 -25
- package/dist/views/Version/SelectLocales/index.js.map +1 -0
- package/dist/views/Version/SelectLocales/types.d.ts +4 -4
- package/dist/views/Version/SelectLocales/types.d.ts.map +1 -1
- package/dist/views/Version/SelectLocales/types.js +2 -5
- package/dist/views/Version/SelectLocales/types.js.map +1 -0
- package/dist/views/Version/index.d.ts +2 -2
- package/dist/views/Version/index.d.ts.map +1 -1
- package/dist/views/Version/index.js +35 -42
- package/dist/views/Version/index.js.map +1 -0
- package/dist/views/Version/meta.d.ts +1 -1
- package/dist/views/Version/meta.d.ts.map +1 -1
- package/dist/views/Version/meta.js +13 -19
- package/dist/views/Version/meta.js.map +1 -0
- package/dist/views/Version/shared.js +3 -21
- package/dist/views/Version/shared.js.map +1 -0
- package/dist/views/Versions/buildColumns.d.ts +2 -2
- package/dist/views/Versions/buildColumns.d.ts.map +1 -1
- package/dist/views/Versions/buildColumns.js +36 -42
- package/dist/views/Versions/buildColumns.js.map +1 -0
- package/dist/views/Versions/cells/AutosaveCell/index.d.ts.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.js +10 -59
- package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -0
- package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.js +18 -25
- package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -0
- package/dist/views/Versions/cells/ID/index.js +6 -57
- package/dist/views/Versions/cells/ID/index.js.map +1 -0
- package/dist/views/Versions/index.client.d.ts +1 -6
- package/dist/views/Versions/index.client.d.ts.map +1 -1
- package/dist/views/Versions/index.client.js +31 -117
- package/dist/views/Versions/index.client.js.map +1 -0
- package/dist/views/Versions/index.d.ts +2 -3
- package/dist/views/Versions/index.d.ts.map +1 -1
- package/dist/views/Versions/index.js +40 -72
- package/dist/views/Versions/index.js.map +1 -0
- package/dist/views/Versions/meta.d.ts +1 -1
- package/dist/views/Versions/meta.d.ts.map +1 -1
- package/dist/views/Versions/meta.js +7 -17
- package/dist/views/Versions/meta.js.map +1 -0
- package/dist/views/Versions/types.js +2 -5
- package/dist/views/Versions/types.js.map +1 -0
- package/dist/webpackEntry.d.ts +5 -0
- package/dist/webpackEntry.d.ts.map +1 -0
- package/dist/webpackEntry.js +6 -0
- package/dist/webpackEntry.js.map +1 -0
- package/dist/withPayload.d.ts +2 -1
- package/dist/withPayload.d.ts.map +1 -1
- package/dist/withPayload.js +3 -8
- package/dist/withPayload.js.map +1 -0
- package/package.json +36 -52
- package/src/index.js +1 -0
- package/dist/295bdb5117ce718dc7ce.woff2 +0 -1
- package/dist/3dec23c585a4abb5db73.woff +0 -1
- package/dist/542802f243f0fcaf55b3.woff2 +0 -1
- package/dist/5e5b3593b8911609ead8.woff +0 -1
- package/dist/64ee2a3127da82b7ea68.woff2 +0 -1
- package/dist/67a3a8f8301a0429df2d.woff +0 -1
- package/dist/8d0dc94a123c04b123f0.woff +0 -1
- package/dist/94db87589768ca1eec3c.woff2 +0 -1
- package/dist/997a8ea7da8ec3068210.woff2 +0 -1
- package/dist/9ab00e972f6f94ca3ff4.woff +0 -1
- package/dist/ab1f8b95d9d1911a4a3e.woff +0 -1
- package/dist/ba5a15d71add74a81bb9.woff +0 -1
- package/dist/bd2c036744af4b004ea6.woff2 +0 -1
- package/dist/bin/index.d.ts +0 -2
- package/dist/bin/index.d.ts.map +0 -1
- package/dist/bin/index.js +0 -37
- package/dist/bin/install.d.ts +0 -4
- package/dist/bin/install.d.ts.map +0 -1
- package/dist/bin/install.js +0 -77
- package/dist/cc56c782af93204aba75.woff +0 -1
- package/dist/d377d6e20b542fe3b375.woff2 +0 -1
- package/dist/e415ace668b22ac52c65.woff2 +0 -1
- package/dist/exports/index.d.ts +0 -2
- package/dist/exports/index.d.ts.map +0 -1
- package/dist/exports/index.js +0 -13
- package/dist/graphql/registerSchema.d.ts +0 -2
- package/dist/graphql/registerSchema.d.ts.map +0 -1
- package/dist/graphql/registerSchema.js +0 -3
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +0 -1
- package/dist/layouts/Admin/index.d.ts +0 -12
- package/dist/layouts/Admin/index.d.ts.map +0 -1
- package/dist/layouts/Admin/index.js +0 -44
- package/dist/layouts/Document/index.d.ts +0 -14
- package/dist/layouts/Document/index.d.ts.map +0 -1
- package/dist/layouts/Document/index.js +0 -82
- package/dist/routes/rest/RouteError.d.ts.map +0 -1
- package/dist/routes/rest/RouteError.js +0 -104
- package/dist/routes/rest/[collection]/file/[filename]/route.d.ts +0 -8
- package/dist/routes/rest/[collection]/file/[filename]/route.d.ts.map +0 -1
- package/dist/routes/rest/[collection]/file/[filename]/route.js +0 -116
- package/dist/styles.css +0 -1
- package/dist/utilities/auth.d.ts +0 -10
- package/dist/utilities/auth.d.ts.map +0 -1
- package/dist/utilities/auth.js +0 -42
- package/dist/utilities/createClientConfig.d.ts +0 -5
- package/dist/utilities/createClientConfig.d.ts.map +0 -1
- package/dist/utilities/createClientConfig.js +0 -120
- package/dist/utilities/getNextT.d.ts +0 -7
- package/dist/utilities/getNextT.d.ts.map +0 -1
- package/dist/utilities/getNextT.js +0 -28
- package/dist/views/Document/getCustomViewByPath.d.ts +0 -4
- package/dist/views/Document/getCustomViewByPath.d.ts.map +0 -1
- package/dist/views/Document/getCustomViewByPath.js +0 -26
- package/dist/views/Edit/Default/RenderCustomView.d.ts +0 -2
- package/dist/views/Edit/Default/RenderCustomView.d.ts.map +0 -1
- package/dist/views/Edit/Default/RenderCustomView.js +0 -3
- package/dist/views/Edit/types.d.js +0 -7
- package/dist/views/Edit/types.d.ts +0 -32
- package/dist/views/Edit/types.d.ts.map +0 -1
- package/dist/views/Edit/types.js +0 -6
- package/dist/views/List/Default/Cell/cellTypes.spec.js +0 -234
- package/dist/views/List/Default/Cell/fields/Array/index.d.ts +0 -7
- package/dist/views/List/Default/Cell/fields/Array/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Array/index.js +0 -27
- package/dist/views/List/Default/Cell/fields/Blocks/index.d.ts +0 -8
- package/dist/views/List/Default/Cell/fields/Blocks/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Blocks/index.js +0 -45
- package/dist/views/List/Default/Cell/fields/Checkbox/index.d.ts +0 -5
- package/dist/views/List/Default/Cell/fields/Checkbox/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Checkbox/index.js +0 -23
- package/dist/views/List/Default/Cell/fields/Checkbox/index.scss +0 -22
- package/dist/views/List/Default/Cell/fields/Code/index.d.ts +0 -8
- package/dist/views/List/Default/Cell/fields/Code/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Code/index.js +0 -29
- package/dist/views/List/Default/Cell/fields/Code/index.scss +0 -27
- package/dist/views/List/Default/Cell/fields/Date/index.d.ts +0 -7
- package/dist/views/List/Default/Cell/fields/Date/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Date/index.js +0 -26
- package/dist/views/List/Default/Cell/fields/File/index.d.ts +0 -7
- package/dist/views/List/Default/Cell/fields/File/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/File/index.js +0 -39
- package/dist/views/List/Default/Cell/fields/File/index.scss +0 -23
- package/dist/views/List/Default/Cell/fields/JSON/index.d.ts +0 -5
- package/dist/views/List/Default/Cell/fields/JSON/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/JSON/index.js +0 -26
- package/dist/views/List/Default/Cell/fields/JSON/index.scss +0 -22
- package/dist/views/List/Default/Cell/fields/Relationship/index.d.ts +0 -9
- package/dist/views/List/Default/Cell/fields/Relationship/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Relationship/index.js +0 -121
- package/dist/views/List/Default/Cell/fields/Relationship/index.scss +0 -3
- package/dist/views/List/Default/Cell/fields/Richtext/index.d.ts +0 -2
- package/dist/views/List/Default/Cell/fields/Richtext/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Richtext/index.js +0 -3
- package/dist/views/List/Default/Cell/fields/Select/index.d.ts +0 -7
- package/dist/views/List/Default/Cell/fields/Select/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Select/index.js +0 -40
- package/dist/views/List/Default/Cell/fields/Textarea/index.d.ts +0 -4
- package/dist/views/List/Default/Cell/fields/Textarea/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/Textarea/index.js +0 -23
- package/dist/views/List/Default/Cell/fields/index.d.ts +0 -17
- package/dist/views/List/Default/Cell/fields/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/fields/index.js +0 -36
- package/dist/views/List/Default/Cell/index.d.ts +0 -4
- package/dist/views/List/Default/Cell/index.d.ts.map +0 -1
- package/dist/views/List/Default/Cell/index.js +0 -89
- package/dist/views/List/Default/RelationshipProvider/index.d.ts +0 -20
- package/dist/views/List/Default/RelationshipProvider/index.d.ts.map +0 -1
- package/dist/views/List/Default/RelationshipProvider/index.js +0 -153
- package/dist/views/List/Default/RelationshipProvider/reducer.d.ts +0 -19
- package/dist/views/List/Default/RelationshipProvider/reducer.d.ts.map +0 -1
- package/dist/views/List/Default/RelationshipProvider/reducer.js +0 -55
- package/dist/views/Unauthorized/UnauthorizedClient.d.ts +0 -5
- package/dist/views/Unauthorized/UnauthorizedClient.d.ts.map +0 -1
- package/dist/views/Unauthorized/UnauthorizedClient.js +0 -27
- package/src/index.ts +0 -6
- /package/dist/{static/SuisseIntl-Bold.2211c494.woff → prod/payload/SuisseIntl-Bold.woff} +0 -0
- /package/dist/{static/SuisseIntl-Bold.9c7dfd00.woff2 → prod/payload/SuisseIntl-Bold.woff2} +0 -0
- /package/dist/{static/SuisseIntl-Medium.d7aeda9e.woff → prod/payload/SuisseIntl-Medium.woff} +0 -0
- /package/dist/{static/SuisseIntl-Medium.5b718d97.woff2 → prod/payload/SuisseIntl-Medium.woff2} +0 -0
- /package/dist/{static/SuisseIntl-SemiBold.e7caa9e1.woff → prod/payload/SuisseIntl-SemiBold.woff} +0 -0
- /package/dist/{static/SuisseIntl-SemiBold.40ad7515.woff2 → prod/payload/SuisseIntl-SemiBold.woff2} +0 -0
- /package/dist/{static/SuisseIntl.8b4ddd0d.woff → prod/payload/SuisseIntl.woff} +0 -0
- /package/dist/{static/SuisseIntl.51922ceb.woff2 → prod/payload/SuisseIntl.woff2} +0 -0
- /package/dist/{static/merriweather-v30-latin-900.efe8f6a3.woff → prod/payload/merriweather-v30-latin-900.woff} +0 -0
- /package/dist/{static/merriweather-v30-latin-900.52244336.woff2 → prod/payload/merriweather-v30-latin-900.woff2} +0 -0
- /package/dist/{static/merriweather-v30-latin-900italic.78b8935f.woff → prod/payload/merriweather-v30-latin-900italic.woff} +0 -0
- /package/dist/{static/merriweather-v30-latin-900italic.f53bb8d4.woff2 → prod/payload/merriweather-v30-latin-900italic.woff2} +0 -0
- /package/dist/{static/merriweather-v30-latin-italic.8f612153.woff → prod/payload/merriweather-v30-latin-italic.woff} +0 -0
- /package/dist/{static/merriweather-v30-latin-italic.a1cfdc5b.woff2 → prod/payload/merriweather-v30-latin-italic.woff2} +0 -0
- /package/dist/{static/merriweather-v30-latin-regular.787999a6.woff → prod/payload/merriweather-v30-latin-regular.woff} +0 -0
- /package/dist/{static/merriweather-v30-latin-regular.e009f214.woff2 → prod/payload/merriweather-v30-latin-regular.woff2} +0 -0
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "isEligibleRequest", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return isEligibleRequest;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
1
|
const ACCEPTABLE_CONTENT_TYPE = /^multipart\/['"()+-_]+(?:; ?['"()+-_]*)+$/i;
|
|
12
2
|
const UNACCEPTABLE_METHODS = new Set([
|
|
13
3
|
'GET',
|
|
@@ -25,7 +15,7 @@ const hasAcceptableContentType = (req)=>{
|
|
|
25
15
|
const contType = req.headers.get('content-type');
|
|
26
16
|
return contType.includes('boundary=') && ACCEPTABLE_CONTENT_TYPE.test(contType);
|
|
27
17
|
};
|
|
28
|
-
const isEligibleRequest = (req)=>{
|
|
18
|
+
export const isEligibleRequest = (req)=>{
|
|
29
19
|
try {
|
|
30
20
|
return hasBody(req) && hasAcceptableMethod(req) && hasAcceptableContentType(req);
|
|
31
21
|
} catch (e) {
|
|
@@ -33,4 +23,4 @@ const isEligibleRequest = (req)=>{
|
|
|
33
23
|
}
|
|
34
24
|
};
|
|
35
25
|
|
|
36
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=isEligibleRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/next-fileupload/isEligibleRequest.ts"],"sourcesContent":["const ACCEPTABLE_CONTENT_TYPE = /^multipart\\/['\"()+-_]+(?:; ?['\"()+-_]*)+$/i\nconst UNACCEPTABLE_METHODS = new Set(['GET', 'HEAD', 'DELETE', 'OPTIONS', 'CONNECT', 'TRACE'])\n\nconst hasBody = (req: Request): boolean => {\n return Boolean(\n req.headers.get('transfer-encoding') ||\n (req.headers.get('content-length') && req.headers.get('content-length') !== '0'),\n )\n}\n\nconst hasAcceptableMethod = (req: Request): boolean => !UNACCEPTABLE_METHODS.has(req.method)\n\nconst hasAcceptableContentType = (req: Request): boolean => {\n const contType = req.headers.get('content-type')\n return contType.includes('boundary=') && ACCEPTABLE_CONTENT_TYPE.test(contType)\n}\n\nexport const isEligibleRequest = (req: Request): boolean => {\n try {\n return hasBody(req) && hasAcceptableMethod(req) && hasAcceptableContentType(req)\n } catch (e) {\n return false\n }\n}\n"],"names":["ACCEPTABLE_CONTENT_TYPE","UNACCEPTABLE_METHODS","Set","hasBody","req","Boolean","headers","get","hasAcceptableMethod","has","method","hasAcceptableContentType","contType","includes","test","isEligibleRequest","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,MAAMA,0BAA0B;AAChC,MAAMC,uBAAuB,IAAIC,IAAI;IAAC;IAAO;IAAQ;IAAU;IAAW;IAAW;CAAQ;AAE7F,MAAMC,UAAU,CAACC;IACf,OAAOC,QACLD,IAAIE,OAAO,CAACC,GAAG,CAAC,wBACbH,IAAIE,OAAO,CAACC,GAAG,CAAC,qBAAqBH,IAAIE,OAAO,CAACC,GAAG,CAAC,sBAAsB;AAElF;AAEA,MAAMC,sBAAsB,CAACJ,MAA0B,CAACH,qBAAqBQ,GAAG,CAACL,IAAIM,MAAM;AAE3F,MAAMC,2BAA2B,CAACP;IAChC,MAAMQ,WAAWR,IAAIE,OAAO,CAACC,GAAG,CAAC;IACjC,OAAOK,SAASC,QAAQ,CAAC,gBAAgBb,wBAAwBc,IAAI,CAACF;AACxE;AAEA,OAAO,MAAMG,oBAAoB,CAACX;IAChC,IAAI;QACF,OAAOD,QAAQC,QAAQI,oBAAoBJ,QAAQO,yBAAyBP;IAC9E,EAAE,OAAOY,GAAG;QACV,OAAO;IACT;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processMultipart.d.ts","sourceRoot":"","sources":["../../src/next-fileupload/processMultipart.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"processMultipart.d.ts","sourceRoot":"","sources":["../../src/next-fileupload/processMultipart.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAU/E,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAC7B,OAAO,EAAE,qBAAqB,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;CACjB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAA;AACrC,eAAO,MAAM,gBAAgB,EAAE,gBAqJ9B,CAAA"}
|
|
@@ -1,27 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return processMultipart;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _busboy = /*#__PURE__*/ _interop_require_default(require("busboy"));
|
|
12
|
-
const _errors = require("payload/errors");
|
|
13
|
-
const _fileFactory = require("./fileFactory");
|
|
14
|
-
const _handlers = require("./handlers");
|
|
15
|
-
const _processNested = require("./processNested");
|
|
16
|
-
const _uploadTimer = require("./uploadTimer");
|
|
17
|
-
const _utilities = require("./utilities");
|
|
18
|
-
function _interop_require_default(obj) {
|
|
19
|
-
return obj && obj.__esModule ? obj : {
|
|
20
|
-
default: obj
|
|
21
|
-
};
|
|
22
|
-
}
|
|
1
|
+
import Busboy from 'busboy';
|
|
2
|
+
import { APIError } from 'payload/errors';
|
|
3
|
+
import { fileFactory } from './fileFactory.js';
|
|
4
|
+
import { memHandler, tempFileHandler } from './handlers.js';
|
|
5
|
+
import { processNested } from './processNested.js';
|
|
6
|
+
import { createUploadTimer } from './uploadTimer.js';
|
|
7
|
+
import { buildFields, debugLog, isFunc, parseFileName } from './utilities.js';
|
|
23
8
|
const waitFlushProperty = Symbol('wait flush property symbol');
|
|
24
|
-
const processMultipart = async ({ options, request })=>{
|
|
9
|
+
export const processMultipart = async ({ options, request })=>{
|
|
25
10
|
let parsingRequest = true;
|
|
26
11
|
const result = {
|
|
27
12
|
fields: undefined,
|
|
@@ -31,37 +16,37 @@ const processMultipart = async ({ options, request })=>{
|
|
|
31
16
|
request.headers.forEach((value, name)=>{
|
|
32
17
|
headersObject[name] = value;
|
|
33
18
|
});
|
|
34
|
-
const busboy = (
|
|
19
|
+
const busboy = Busboy({
|
|
35
20
|
...options,
|
|
36
21
|
headers: headersObject
|
|
37
22
|
});
|
|
38
23
|
// Build multipart req.body fields
|
|
39
24
|
busboy.on('field', (field, val)=>{
|
|
40
|
-
result.fields =
|
|
25
|
+
result.fields = buildFields(result.fields, field, val);
|
|
41
26
|
});
|
|
42
27
|
// Build req.files fields
|
|
43
28
|
busboy.on('file', (field, file, info)=>{
|
|
44
29
|
// Parse file name(cutting huge names, decoding, etc..).
|
|
45
30
|
const { encoding, filename: name, mimeType: mime } = info;
|
|
46
|
-
const filename =
|
|
31
|
+
const filename = parseFileName(options, name);
|
|
47
32
|
// Define methods and handlers for upload process.
|
|
48
|
-
const { cleanup, complete, dataHandler, getFilePath, getFileSize, getHash, getWritePromise } = options.useTempFiles ?
|
|
49
|
-
:
|
|
33
|
+
const { cleanup, complete, dataHandler, getFilePath, getFileSize, getHash, getWritePromise } = options.useTempFiles ? tempFileHandler(options, field, filename) // Upload into temporary file.
|
|
34
|
+
: memHandler(options, field, filename) // Upload into RAM.
|
|
50
35
|
;
|
|
51
36
|
const writePromise = options.useTempFiles ? getWritePromise().catch((err)=>{
|
|
52
37
|
busboy.end();
|
|
53
38
|
cleanup();
|
|
54
39
|
}) : getWritePromise();
|
|
55
|
-
const uploadTimer =
|
|
40
|
+
const uploadTimer = createUploadTimer(options.uploadTimeout, ()=>{
|
|
56
41
|
file.removeAllListeners('data');
|
|
57
42
|
file.resume();
|
|
58
43
|
const err = new Error(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`);
|
|
59
44
|
return file.destroy(err);
|
|
60
45
|
});
|
|
61
46
|
file.on('limit', ()=>{
|
|
62
|
-
|
|
47
|
+
debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`);
|
|
63
48
|
uploadTimer.clear();
|
|
64
|
-
if (
|
|
49
|
+
if (isFunc(options.limitHandler)) {
|
|
65
50
|
options.limitHandler({
|
|
66
51
|
request,
|
|
67
52
|
size: getFileSize()
|
|
@@ -69,10 +54,10 @@ const processMultipart = async ({ options, request })=>{
|
|
|
69
54
|
}
|
|
70
55
|
// Return error and cleanup files if abortOnLimit set.
|
|
71
56
|
if (options.abortOnLimit) {
|
|
72
|
-
|
|
57
|
+
debugLog(options, `Aborting upload because of size limit ${field}->${filename}.`);
|
|
73
58
|
cleanup();
|
|
74
59
|
parsingRequest = false;
|
|
75
|
-
throw new
|
|
60
|
+
throw new APIError(options.responseOnLimit, 413, {
|
|
76
61
|
size: getFileSize()
|
|
77
62
|
});
|
|
78
63
|
}
|
|
@@ -83,16 +68,16 @@ const processMultipart = async ({ options, request })=>{
|
|
|
83
68
|
});
|
|
84
69
|
file.on('end', ()=>{
|
|
85
70
|
const size = getFileSize();
|
|
86
|
-
|
|
71
|
+
debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`);
|
|
87
72
|
uploadTimer.clear();
|
|
88
73
|
if (!name && size === 0) {
|
|
89
74
|
if (options.useTempFiles) {
|
|
90
75
|
cleanup();
|
|
91
|
-
|
|
76
|
+
debugLog(options, `Removing the empty file ${field}->${filename}`);
|
|
92
77
|
}
|
|
93
|
-
return
|
|
78
|
+
return debugLog(options, `Don't add file instance if original name and size are empty`);
|
|
94
79
|
}
|
|
95
|
-
result.files =
|
|
80
|
+
result.files = buildFields(result.files, field, fileFactory({
|
|
96
81
|
name: filename,
|
|
97
82
|
buffer: complete(),
|
|
98
83
|
encoding,
|
|
@@ -109,17 +94,17 @@ const processMultipart = async ({ options, request })=>{
|
|
|
109
94
|
});
|
|
110
95
|
file.on('error', (err)=>{
|
|
111
96
|
uploadTimer.clear();
|
|
112
|
-
|
|
97
|
+
debugLog(options, `File Error: ${err.message}`);
|
|
113
98
|
cleanup();
|
|
114
99
|
});
|
|
115
|
-
|
|
100
|
+
debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`);
|
|
116
101
|
uploadTimer.set();
|
|
117
102
|
});
|
|
118
103
|
busboy.on('finish', ()=>{
|
|
119
|
-
|
|
104
|
+
debugLog(options, `Busboy finished parsing request.`);
|
|
120
105
|
if (options.parseNested) {
|
|
121
|
-
result.fields =
|
|
122
|
-
result.files =
|
|
106
|
+
result.fields = processNested(result.fields);
|
|
107
|
+
result.files = processNested(result.files);
|
|
123
108
|
}
|
|
124
109
|
if (request[waitFlushProperty]) {
|
|
125
110
|
Promise.all(request[waitFlushProperty]).then(()=>{
|
|
@@ -128,9 +113,9 @@ const processMultipart = async ({ options, request })=>{
|
|
|
128
113
|
}
|
|
129
114
|
});
|
|
130
115
|
busboy.on('error', (err)=>{
|
|
131
|
-
|
|
116
|
+
debugLog(options, `Busboy error`);
|
|
132
117
|
parsingRequest = false;
|
|
133
|
-
throw new
|
|
118
|
+
throw new APIError('Busboy error parsing multipart request', 500);
|
|
134
119
|
});
|
|
135
120
|
const reader = request.body.getReader();
|
|
136
121
|
while(parsingRequest){
|
|
@@ -138,9 +123,11 @@ const processMultipart = async ({ options, request })=>{
|
|
|
138
123
|
if (done) {
|
|
139
124
|
parsingRequest = false;
|
|
140
125
|
}
|
|
141
|
-
|
|
126
|
+
if (value) {
|
|
127
|
+
busboy.write(value);
|
|
128
|
+
}
|
|
142
129
|
}
|
|
143
130
|
return result;
|
|
144
131
|
};
|
|
145
132
|
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXh0LWZpbGV1cGxvYWQvcHJvY2Vzc011bHRpcGFydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVzYm95IGZyb20gJ2J1c2JveSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5cbmltcG9ydCB0eXBlIHsgTmV4dEZpbGVVcGxvYWRPcHRpb25zLCBOZXh0RmlsZVVwbG9hZFJlc3BvbnNlIH0gZnJvbSAnLidcblxuaW1wb3J0IHsgZmlsZUZhY3RvcnkgfSBmcm9tICcuL2ZpbGVGYWN0b3J5J1xuaW1wb3J0IHsgbWVtSGFuZGxlciwgdGVtcEZpbGVIYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVycydcbmltcG9ydCB7IHByb2Nlc3NOZXN0ZWQgfSBmcm9tICcuL3Byb2Nlc3NOZXN0ZWQnXG5pbXBvcnQgeyBjcmVhdGVVcGxvYWRUaW1lciB9IGZyb20gJy4vdXBsb2FkVGltZXInXG5pbXBvcnQgeyBidWlsZEZpZWxkcywgZGVidWdMb2csIGlzRnVuYywgcGFyc2VGaWxlTmFtZSB9IGZyb20gJy4vdXRpbGl0aWVzJ1xuXG5jb25zdCB3YWl0Rmx1c2hQcm9wZXJ0eSA9IFN5bWJvbCgnd2FpdCBmbHVzaCBwcm9wZXJ0eSBzeW1ib2wnKVxuXG50eXBlIFByb2Nlc3NNdWx0aXBhcnQgPSAoYXJnczoge1xuICBvcHRpb25zOiBOZXh0RmlsZVVwbG9hZE9wdGlvbnNcbiAgcmVxdWVzdDogUmVxdWVzdFxufSkgPT4gUHJvbWlzZTxOZXh0RmlsZVVwbG9hZFJlc3BvbnNlPlxuZXhwb3J0IGNvbnN0IHByb2Nlc3NNdWx0aXBhcnQ6IFByb2Nlc3NNdWx0aXBhcnQgPSBhc3luYyAoeyBvcHRpb25zLCByZXF1ZXN0IH0pID0+IHtcbiAgbGV0IHBhcnNpbmdSZXF1ZXN0ID0gdHJ1ZVxuICBjb25zdCByZXN1bHQ6IE5leHRGaWxlVXBsb2FkUmVzcG9uc2UgPSB7XG4gICAgZmllbGRzOiB1bmRlZmluZWQsXG4gICAgZmlsZXM6IHVuZGVmaW5lZCxcbiAgfVxuXG4gIGNvbnN0IGhlYWRlcnNPYmplY3QgPSB7fVxuICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaCgodmFsdWUsIG5hbWUpID0+IHtcbiAgICBoZWFkZXJzT2JqZWN0W25hbWVdID0gdmFsdWVcbiAgfSlcblxuICBjb25zdCBidXNib3kgPSBCdXNib3koeyAuLi5vcHRpb25zLCBoZWFkZXJzOiBoZWFkZXJzT2JqZWN0IH0pXG5cbiAgLy8gQnVpbGQgbXVsdGlwYXJ0IHJlcS5ib2R5IGZpZWxkc1xuICBidXNib3kub24oJ2ZpZWxkJywgKGZpZWxkLCB2YWwpID0+IHtcbiAgICByZXN1bHQuZmllbGRzID0gYnVpbGRGaWVsZHMocmVzdWx0LmZpZWxkcywgZmllbGQsIHZhbClcbiAgfSlcblxuICAvLyBCdWlsZCByZXEuZmlsZXMgZmllbGRzXG4gIGJ1c2JveS5vbignZmlsZScsIChmaWVsZCwgZmlsZSwgaW5mbykgPT4ge1xuICAgIC8vIFBhcnNlIGZpbGUgbmFtZShjdXR0aW5nIGh1Z2UgbmFtZXMsIGRlY29kaW5nLCBldGMuLikuXG4gICAgY29uc3QgeyBlbmNvZGluZywgZmlsZW5hbWU6IG5hbWUsIG1pbWVUeXBlOiBtaW1lIH0gPSBpbmZvXG4gICAgY29uc3QgZmlsZW5hbWUgPSBwYXJzZUZpbGVOYW1lKG9wdGlvbnMsIG5hbWUpXG5cbiAgICAvLyBEZWZpbmUgbWV0aG9kcyBhbmQgaGFuZGxlcnMgZm9yIHVwbG9hZCBwcm9jZXNzLlxuICAgIGNvbnN0IHsgY2xlYW51cCwgY29tcGxldGUsIGRhdGFIYW5kbGVyLCBnZXRGaWxlUGF0aCwgZ2V0RmlsZVNpemUsIGdldEhhc2gsIGdldFdyaXRlUHJvbWlzZSB9ID1cbiAgICAgIG9wdGlvbnMudXNlVGVtcEZpbGVzXG4gICAgICAgID8gdGVtcEZpbGVIYW5kbGVyKG9wdGlvbnMsIGZpZWxkLCBmaWxlbmFtZSkgLy8gVXBsb2FkIGludG8gdGVtcG9yYXJ5IGZpbGUuXG4gICAgICAgIDogbWVtSGFuZGxlcihvcHRpb25zLCBmaWVsZCwgZmlsZW5hbWUpIC8vIFVwbG9hZCBpbnRvIFJBTS5cblxuICAgIGNvbnN0IHdyaXRlUHJvbWlzZSA9IG9wdGlvbnMudXNlVGVtcEZpbGVzXG4gICAgICA/IGdldFdyaXRlUHJvbWlzZSgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBidXNib3kuZW5kKClcbiAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgfSlcbiAgICAgIDogZ2V0V3JpdGVQcm9taXNlKClcblxuICAgIGNvbnN0IHVwbG9hZFRpbWVyID0gY3JlYXRlVXBsb2FkVGltZXIob3B0aW9ucy51cGxvYWRUaW1lb3V0LCAoKSA9PiB7XG4gICAgICBmaWxlLnJlbW92ZUFsbExpc3RlbmVycygnZGF0YScpXG4gICAgICBmaWxlLnJlc3VtZSgpXG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYFVwbG9hZCB0aW1lb3V0IGZvciAke2ZpZWxkfS0+JHtmaWxlbmFtZX0sIGJ5dGVzOiR7Z2V0RmlsZVNpemUoKX1gKVxuICAgICAgcmV0dXJuIGZpbGUuZGVzdHJveShlcnIpXG4gICAgfSlcblxuICAgIGZpbGUub24oJ2xpbWl0JywgKCkgPT4ge1xuICAgICAgZGVidWdMb2cob3B0aW9ucywgYFNpemUgbGltaXQgcmVhY2hlZCBmb3IgJHtmaWVsZH0tPiR7ZmlsZW5hbWV9LCBieXRlczoke2dldEZpbGVTaXplKCl9YClcbiAgICAgIHVwbG9hZFRpbWVyLmNsZWFyKClcblxuICAgICAgaWYgKGlzRnVuYyhvcHRpb25zLmxpbWl0SGFuZGxlcikpIHtcbiAgICAgICAgb3B0aW9ucy5saW1pdEhhbmRsZXIoeyByZXF1ZXN0LCBzaXplOiBnZXRGaWxlU2l6ZSgpIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFJldHVybiBlcnJvciBhbmQgY2xlYW51cCBmaWxlcyBpZiBhYm9ydE9uTGltaXQgc2V0LlxuICAgICAgaWYgKG9wdGlvbnMuYWJvcnRPbkxpbWl0KSB7XG4gICAgICAgIGRlYnVnTG9nKG9wdGlvbnMsIGBBYm9ydGluZyB1cGxvYWQgYmVjYXVzZSBvZiBzaXplIGxpbWl0ICR7ZmllbGR9LT4ke2ZpbGVuYW1lfS5gKVxuICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgcGFyc2luZ1JlcXVlc3QgPSBmYWxzZVxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3Iob3B0aW9ucy5yZXNwb25zZU9uTGltaXQsIDQxMywgeyBzaXplOiBnZXRGaWxlU2l6ZSgpIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIGZpbGUub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgdXBsb2FkVGltZXIuc2V0KClcbiAgICAgIGRhdGFIYW5kbGVyKGRhdGEpXG4gICAgfSlcblxuICAgIGZpbGUub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSBnZXRGaWxlU2l6ZSgpXG4gICAgICBkZWJ1Z0xvZyhvcHRpb25zLCBgVXBsb2FkIGZpbmlzaGVkICR7ZmllbGR9LT4ke2ZpbGVuYW1lfSwgYnl0ZXM6JHtzaXplfWApXG4gICAgICB1cGxvYWRUaW1lci5jbGVhcigpXG5cbiAgICAgIGlmICghbmFtZSAmJiBzaXplID09PSAwKSB7XG4gICAgICAgIGlmIChvcHRpb25zLnVzZVRlbXBGaWxlcykge1xuICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgIGRlYnVnTG9nKG9wdGlvbnMsIGBSZW1vdmluZyB0aGUgZW1wdHkgZmlsZSAke2ZpZWxkfS0+JHtmaWxlbmFtZX1gKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWJ1Z0xvZyhvcHRpb25zLCBgRG9uJ3QgYWRkIGZpbGUgaW5zdGFuY2UgaWYgb3JpZ2luYWwgbmFtZSBhbmQgc2l6ZSBhcmUgZW1wdHlgKVxuICAgICAgfVxuXG4gICAgICByZXN1bHQuZmlsZXMgPSBidWlsZEZpZWxkcyhcbiAgICAgICAgcmVzdWx0LmZpbGVzLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgZmlsZUZhY3RvcnkoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWUsXG4gICAgICAgICAgICBidWZmZXI6IGNvbXBsZXRlKCksXG4gICAgICAgICAgICBlbmNvZGluZyxcbiAgICAgICAgICAgIGhhc2g6IGdldEhhc2goKSxcbiAgICAgICAgICAgIG1pbWV0eXBlOiBtaW1lLFxuICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIHRlbXBGaWxlUGF0aDogZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICAgIHRydW5jYXRlZDogQm9vbGVhbigndHJ1bmNhdGVkJyBpbiBmaWxlICYmIGZpbGUudHJ1bmNhdGVkKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICksXG4gICAgICApXG5cbiAgICAgIGlmICghcmVxdWVzdFt3YWl0Rmx1c2hQcm9wZXJ0eV0pIHtcbiAgICAgICAgcmVxdWVzdFt3YWl0Rmx1c2hQcm9wZXJ0eV0gPSBbXVxuICAgICAgfVxuICAgICAgcmVxdWVzdFt3YWl0Rmx1c2hQcm9wZXJ0eV0ucHVzaCh3cml0ZVByb21pc2UpXG4gICAgfSlcblxuICAgIGZpbGUub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgdXBsb2FkVGltZXIuY2xlYXIoKVxuICAgICAgZGVidWdMb2cob3B0aW9ucywgYEZpbGUgRXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YClcbiAgICAgIGNsZWFudXAoKVxuICAgIH0pXG5cbiAgICBkZWJ1Z0xvZyhvcHRpb25zLCBgTmV3IHVwbG9hZCBzdGFydGVkICR7ZmllbGR9LT4ke2ZpbGVuYW1lfSwgYnl0ZXM6JHtnZXRGaWxlU2l6ZSgpfWApXG4gICAgdXBsb2FkVGltZXIuc2V0KClcbiAgfSlcblxuICBidXNib3kub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBkZWJ1Z0xvZyhvcHRpb25zLCBgQnVzYm95IGZpbmlzaGVkIHBhcnNpbmcgcmVxdWVzdC5gKVxuICAgIGlmIChvcHRpb25zLnBhcnNlTmVzdGVkKSB7XG4gICAgICByZXN1bHQuZmllbGRzID0gcHJvY2Vzc05lc3RlZChyZXN1bHQuZmllbGRzKVxuICAgICAgcmVzdWx0LmZpbGVzID0gcHJvY2Vzc05lc3RlZChyZXN1bHQuZmlsZXMpXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3Rbd2FpdEZsdXNoUHJvcGVydHldKSB7XG4gICAgICBQcm9taXNlLmFsbChyZXF1ZXN0W3dhaXRGbHVzaFByb3BlcnR5XSkudGhlbigoKSA9PiB7XG4gICAgICAgIGRlbGV0ZSByZXF1ZXN0W3dhaXRGbHVzaFByb3BlcnR5XVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgYnVzYm95Lm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICBkZWJ1Z0xvZyhvcHRpb25zLCBgQnVzYm95IGVycm9yYClcbiAgICBwYXJzaW5nUmVxdWVzdCA9IGZhbHNlXG4gICAgdGhyb3cgbmV3IEFQSUVycm9yKCdCdXNib3kgZXJyb3IgcGFyc2luZyBtdWx0aXBhcnQgcmVxdWVzdCcsIDUwMClcbiAgfSlcblxuICBjb25zdCByZWFkZXIgPSByZXF1ZXN0LmJvZHkuZ2V0UmVhZGVyKClcblxuICB3aGlsZSAocGFyc2luZ1JlcXVlc3QpIHtcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG5cbiAgICBpZiAoZG9uZSkge1xuICAgICAgcGFyc2luZ1JlcXVlc3QgPSBmYWxzZVxuICAgIH1cblxuICAgIGJ1c2JveS53cml0ZSh2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzTXVsdGlwYXJ0Iiwid2FpdEZsdXNoUHJvcGVydHkiLCJTeW1ib2wiLCJvcHRpb25zIiwicmVxdWVzdCIsInBhcnNpbmdSZXF1ZXN0IiwicmVzdWx0IiwiZmllbGRzIiwidW5kZWZpbmVkIiwiZmlsZXMiLCJoZWFkZXJzT2JqZWN0IiwiaGVhZGVycyIsImZvckVhY2giLCJ2YWx1ZSIsIm5hbWUiLCJidXNib3kiLCJCdXNib3kiLCJvbiIsImZpZWxkIiwidmFsIiwiYnVpbGRGaWVsZHMiLCJmaWxlIiwiaW5mbyIsImVuY29kaW5nIiwiZmlsZW5hbWUiLCJtaW1lVHlwZSIsIm1pbWUiLCJwYXJzZUZpbGVOYW1lIiwiY2xlYW51cCIsImNvbXBsZXRlIiwiZGF0YUhhbmRsZXIiLCJnZXRGaWxlUGF0aCIsImdldEZpbGVTaXplIiwiZ2V0SGFzaCIsImdldFdyaXRlUHJvbWlzZSIsInVzZVRlbXBGaWxlcyIsInRlbXBGaWxlSGFuZGxlciIsIm1lbUhhbmRsZXIiLCJ3cml0ZVByb21pc2UiLCJjYXRjaCIsImVyciIsImVuZCIsInVwbG9hZFRpbWVyIiwiY3JlYXRlVXBsb2FkVGltZXIiLCJ1cGxvYWRUaW1lb3V0IiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwicmVzdW1lIiwiRXJyb3IiLCJkZXN0cm95IiwiZGVidWdMb2ciLCJjbGVhciIsImlzRnVuYyIsImxpbWl0SGFuZGxlciIsInNpemUiLCJhYm9ydE9uTGltaXQiLCJBUElFcnJvciIsInJlc3BvbnNlT25MaW1pdCIsImRhdGEiLCJzZXQiLCJmaWxlRmFjdG9yeSIsImJ1ZmZlciIsImhhc2giLCJtaW1ldHlwZSIsInRlbXBGaWxlUGF0aCIsInRydW5jYXRlZCIsIkJvb2xlYW4iLCJwdXNoIiwibWVzc2FnZSIsInBhcnNlTmVzdGVkIiwicHJvY2Vzc05lc3RlZCIsIlByb21pc2UiLCJhbGwiLCJ0aGVuIiwicmVhZGVyIiwiYm9keSIsImdldFJlYWRlciIsImRvbmUiLCJyZWFkIiwid3JpdGUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBaUJhQTs7O2VBQUFBOzs7K0RBakJNO3dCQUNNOzZCQUlHOzBCQUNnQjsrQkFDZDs2QkFDSTsyQkFDMkI7Ozs7OztBQUU3RCxNQUFNQyxvQkFBb0JDLE9BQU87QUFNMUIsTUFBTUYsbUJBQXFDLE9BQU8sRUFBRUcsT0FBTyxFQUFFQyxPQUFPLEVBQUU7SUFDM0UsSUFBSUMsaUJBQWlCO0lBQ3JCLE1BQU1DLFNBQWlDO1FBQ3JDQyxRQUFRQztRQUNSQyxPQUFPRDtJQUNUO0lBRUEsTUFBTUUsZ0JBQWdCLENBQUM7SUFDdkJOLFFBQVFPLE9BQU8sQ0FBQ0MsT0FBTyxD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
|
|
133
|
+
//# sourceMappingURL=processMultipart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/next-fileupload/processMultipart.ts"],"sourcesContent":["import Busboy from 'busboy'\nimport { APIError } from 'payload/errors'\n\nimport type { NextFileUploadOptions, NextFileUploadResponse } from './index.js'\n\nimport { fileFactory } from './fileFactory.js'\nimport { memHandler, tempFileHandler } from './handlers.js'\nimport { processNested } from './processNested.js'\nimport { createUploadTimer } from './uploadTimer.js'\nimport { buildFields, debugLog, isFunc, parseFileName } from './utilities.js'\n\nconst waitFlushProperty = Symbol('wait flush property symbol')\n\ntype ProcessMultipart = (args: {\n options: NextFileUploadOptions\n request: Request\n}) => Promise<NextFileUploadResponse>\nexport const processMultipart: ProcessMultipart = async ({ options, request }) => {\n let parsingRequest = true\n const result: NextFileUploadResponse = {\n fields: undefined,\n files: undefined,\n }\n\n const headersObject = {}\n request.headers.forEach((value, name) => {\n headersObject[name] = value\n })\n\n const busboy = Busboy({ ...options, headers: headersObject })\n\n // Build multipart req.body fields\n busboy.on('field', (field, val) => {\n result.fields = buildFields(result.fields, field, val)\n })\n\n // Build req.files fields\n busboy.on('file', (field, file, info) => {\n // Parse file name(cutting huge names, decoding, etc..).\n const { encoding, filename: name, mimeType: mime } = info\n const filename = parseFileName(options, name)\n\n // Define methods and handlers for upload process.\n const { cleanup, complete, dataHandler, getFilePath, getFileSize, getHash, getWritePromise } =\n options.useTempFiles\n ? tempFileHandler(options, field, filename) // Upload into temporary file.\n : memHandler(options, field, filename) // Upload into RAM.\n\n const writePromise = options.useTempFiles\n ? getWritePromise().catch((err) => {\n busboy.end()\n cleanup()\n })\n : getWritePromise()\n\n const uploadTimer = createUploadTimer(options.uploadTimeout, () => {\n file.removeAllListeners('data')\n file.resume()\n const err = new Error(`Upload timeout for ${field}->${filename}, bytes:${getFileSize()}`)\n return file.destroy(err)\n })\n\n file.on('limit', () => {\n debugLog(options, `Size limit reached for ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.clear()\n\n if (isFunc(options.limitHandler)) {\n options.limitHandler({ request, size: getFileSize() })\n }\n\n // Return error and cleanup files if abortOnLimit set.\n if (options.abortOnLimit) {\n debugLog(options, `Aborting upload because of size limit ${field}->${filename}.`)\n cleanup()\n parsingRequest = false\n throw new APIError(options.responseOnLimit, 413, { size: getFileSize() })\n }\n })\n\n file.on('data', (data) => {\n uploadTimer.set()\n dataHandler(data)\n })\n\n file.on('end', () => {\n const size = getFileSize()\n debugLog(options, `Upload finished ${field}->${filename}, bytes:${size}`)\n uploadTimer.clear()\n\n if (!name && size === 0) {\n if (options.useTempFiles) {\n cleanup()\n debugLog(options, `Removing the empty file ${field}->${filename}`)\n }\n return debugLog(options, `Don't add file instance if original name and size are empty`)\n }\n\n result.files = buildFields(\n result.files,\n field,\n fileFactory(\n {\n name: filename,\n buffer: complete(),\n encoding,\n hash: getHash(),\n mimetype: mime,\n size,\n tempFilePath: getFilePath(),\n truncated: Boolean('truncated' in file && file.truncated),\n },\n options,\n ),\n )\n\n if (!request[waitFlushProperty]) {\n request[waitFlushProperty] = []\n }\n request[waitFlushProperty].push(writePromise)\n })\n\n file.on('error', (err) => {\n uploadTimer.clear()\n debugLog(options, `File Error: ${err.message}`)\n cleanup()\n })\n\n debugLog(options, `New upload started ${field}->${filename}, bytes:${getFileSize()}`)\n uploadTimer.set()\n })\n\n busboy.on('finish', () => {\n debugLog(options, `Busboy finished parsing request.`)\n if (options.parseNested) {\n result.fields = processNested(result.fields)\n result.files = processNested(result.files)\n }\n\n if (request[waitFlushProperty]) {\n Promise.all(request[waitFlushProperty]).then(() => {\n delete request[waitFlushProperty]\n })\n }\n })\n\n busboy.on('error', (err) => {\n debugLog(options, `Busboy error`)\n parsingRequest = false\n throw new APIError('Busboy error parsing multipart request', 500)\n })\n\n const reader = request.body.getReader()\n\n while (parsingRequest) {\n const { done, value } = await reader.read()\n\n if (done) {\n parsingRequest = false\n }\n\n if (value) {\n busboy.write(value)\n }\n }\n\n return result\n}\n"],"names":["Busboy","APIError","fileFactory","memHandler","tempFileHandler","processNested","createUploadTimer","buildFields","debugLog","isFunc","parseFileName","waitFlushProperty","Symbol","processMultipart","options","request","parsingRequest","result","fields","undefined","files","headersObject","headers","forEach","value","name","busboy","on","field","val","file","info","encoding","filename","mimeType","mime","cleanup","complete","dataHandler","getFilePath","getFileSize","getHash","getWritePromise","useTempFiles","writePromise","catch","err","end","uploadTimer","uploadTimeout","removeAllListeners","resume","Error","destroy","clear","limitHandler","size","abortOnLimit","responseOnLimit","data","set","buffer","hash","mimetype","tempFilePath","truncated","Boolean","push","message","parseNested","Promise","all","then","reader","body","getReader","done","read","write"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "processNested", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return processNested;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _utilities = require("./utilities");
|
|
12
|
-
const processNested = function(data) {
|
|
1
|
+
import { isSafeFromPollution } from './utilities.js';
|
|
2
|
+
export const processNested = function(data) {
|
|
13
3
|
if (!data || data.length < 1) return Object.create(null);
|
|
14
4
|
const d = Object.create(null), keys = Object.keys(data);
|
|
15
5
|
for(let i = 0; i < keys.length; i++){
|
|
@@ -17,7 +7,7 @@ const processNested = function(data) {
|
|
|
17
7
|
for(let index = 0; index < keyParts.length; index++){
|
|
18
8
|
const k = keyParts[index];
|
|
19
9
|
// Ensure we don't allow prototype pollution
|
|
20
|
-
if (!
|
|
10
|
+
if (!isSafeFromPollution(current, k)) {
|
|
21
11
|
continue;
|
|
22
12
|
}
|
|
23
13
|
if (index >= keyParts.length - 1) {
|
|
@@ -31,4 +21,4 @@ const processNested = function(data) {
|
|
|
31
21
|
return d;
|
|
32
22
|
};
|
|
33
23
|
|
|
34
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=processNested.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/next-fileupload/processNested.ts"],"sourcesContent":["import { isSafeFromPollution } from './utilities.js'\n\nexport const processNested = function (data) {\n if (!data || data.length < 1) return Object.create(null)\n\n const d = Object.create(null),\n keys = Object.keys(data)\n\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i],\n value = data[key],\n current = d,\n keyParts = key.replace(new RegExp(/\\[/g), '.').replace(new RegExp(/\\]/g), '').split('.')\n\n for (let index = 0; index < keyParts.length; index++) {\n const k = keyParts[index]\n\n // Ensure we don't allow prototype pollution\n if (!isSafeFromPollution(current, k)) {\n continue\n }\n\n if (index >= keyParts.length - 1) {\n current[k] = value\n } else {\n if (!current[k]) current[k] = !keyParts[index + 1] ? [] : Object.create(null)\n current = current[k]\n }\n }\n }\n return d\n}\n"],"names":["isSafeFromPollution","processNested","data","length","Object","create","d","keys","i","key","value","current","keyParts","replace","RegExp","split","index","k"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,mBAAmB,QAAQ,iBAAgB;AAEpD,OAAO,MAAMC,gBAAgB,SAAUC,IAAI;IACzC,IAAI,CAACA,QAAQA,KAAKC,MAAM,GAAG,GAAG,OAAOC,OAAOC,MAAM,CAAC;IAEnD,MAAMC,IAAIF,OAAOC,MAAM,CAAC,OACtBE,OAAOH,OAAOG,IAAI,CAACL;IAErB,IAAK,IAAIM,IAAI,GAAGA,IAAID,KAAKJ,MAAM,EAAEK,IAAK;QACpC,IAAIC,MAAMF,IAAI,CAACC,EAAE,EACfE,QAAQR,IAAI,CAACO,IAAI,EACjBE,UAAUL,GACVM,WAAWH,IAAII,OAAO,CAAC,IAAIC,OAAO,QAAQ,KAAKD,OAAO,CAAC,IAAIC,OAAO,QAAQ,IAAIC,KAAK,CAAC;QAEtF,IAAK,IAAIC,QAAQ,GAAGA,QAAQJ,SAAST,MAAM,EAAEa,QAAS;YACpD,MAAMC,IAAIL,QAAQ,CAACI,MAAM;YAEzB,4CAA4C;YAC5C,IAAI,CAAChB,oBAAoBW,SAASM,IAAI;gBACpC;YACF;YAEA,IAAID,SAASJ,SAAST,MAAM,GAAG,GAAG;gBAChCQ,OAAO,CAACM,EAAE,GAAGP;YACf,OAAO;gBACL,IAAI,CAACC,OAAO,CAACM,EAAE,EAAEN,OAAO,CAACM,EAAE,GAAG,CAACL,QAAQ,CAACI,QAAQ,EAAE,GAAG,EAAE,GAAGZ,OAAOC,MAAM,CAAC;gBACxEM,UAAUA,OAAO,CAACM,EAAE;YACtB;QACF;IACF;IACA,OAAOX;AACT,EAAC"}
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "createUploadTimer", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return createUploadTimer;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const createUploadTimer = (timeout = 0, callback = ()=>{})=>{
|
|
1
|
+
export const createUploadTimer = (timeout = 0, callback = ()=>{})=>{
|
|
12
2
|
let timer = null;
|
|
13
3
|
const clear = ()=>{
|
|
14
4
|
clearTimeout(timer);
|
|
@@ -26,4 +16,4 @@ const createUploadTimer = (timeout = 0, callback = ()=>{})=>{
|
|
|
26
16
|
};
|
|
27
17
|
};
|
|
28
18
|
|
|
29
|
-
//# sourceMappingURL=
|
|
19
|
+
//# sourceMappingURL=uploadTimer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/next-fileupload/uploadTimer.ts"],"sourcesContent":["type CreateUploadTimer = (\n timeout?: number,\n callback?: () => void,\n) => {\n clear: () => void\n set: () => boolean\n}\n\nexport const createUploadTimer: CreateUploadTimer = (timeout = 0, callback = () => {}) => {\n let timer = null\n\n const clear = () => {\n clearTimeout(timer)\n }\n\n const set = () => {\n // Do not start a timer if zero timeout or it hasn't been set.\n if (!timeout) return false\n clear()\n timer = setTimeout(callback, timeout)\n return true\n }\n\n return { clear, set }\n}\n"],"names":["createUploadTimer","timeout","callback","timer","clear","clearTimeout","set","setTimeout"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAQA,OAAO,MAAMA,oBAAuC,CAACC,UAAU,CAAC,EAAEC,WAAW,KAAO,CAAC;IACnF,IAAIC,QAAQ;IAEZ,MAAMC,QAAQ;QACZC,aAAaF;IACf;IAEA,MAAMG,MAAM;QACV,8DAA8D;QAC9D,IAAI,CAACL,SAAS,OAAO;QACrBG;QACAD,QAAQI,WAAWL,UAAUD;QAC7B,OAAO;IACT;IAEA,OAAO;QAAEG;QAAOE;IAAI;AACtB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/next-fileupload/utilities.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/next-fileupload/utilities.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAWvD;;GAEG;AACH,eAAO,MAAM,QAAQ,YAAa,qBAAqB,OAAO,MAAM,YAKnE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,YAAY,MAAM,WAG7C,CAAA;AAED,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AACvC,eAAO,MAAM,MAAM,UAAW,GAAG,sBAEhC,CAAA;AAQD;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;AAClG,eAAO,MAAM,eAAe,EAAE,eAU7B,CAAA;AAOD;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;AAC9D,eAAO,MAAM,mBAAmB,EAAE,mBAQjC,CAAA;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AACpE,eAAO,MAAM,WAAW,EAAE,WAoBzB,CAAA;AAED;;;GAGG;AACH,KAAK,eAAe,GAAG,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;AAC9F,eAAO,MAAM,eAAe,EAAE,eAQ7B,CAAA;AAED;;GAEG;AACH,KAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAA;AAC3E,eAAO,MAAM,UAAU,EAAE,UACM,CAAA;AA4B/B;;;GAGG;AACH,KAAK,QAAQ,GAAG,CACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,KAC9C,IAAI,CAAA;AACT,eAAO,MAAM,QAAQ,EAAE,QASnB,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,oDAwB5B,CAAA;AA+BD;;GAEG;AACH,KAAK,sBAAsB,GAAG,CAC5B,iBAAiB,EAAE,OAAO,GAAG,MAAM,EACnC,QAAQ,EAAE,MAAM,KACb;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,eAAO,MAAM,sBAAsB,EAAE,sBAwBpC,CAAA;AAED;;GAEG;AACH,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;AAC9E,eAAO,MAAM,aAAa,EAAE,aAmB3B,CAAA"}
|
|
@@ -1,59 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
buildFields: function() {
|
|
13
|
-
return buildFields;
|
|
14
|
-
},
|
|
15
|
-
checkAndMakeDir: function() {
|
|
16
|
-
return checkAndMakeDir;
|
|
17
|
-
},
|
|
18
|
-
debugLog: function() {
|
|
19
|
-
return debugLog;
|
|
20
|
-
},
|
|
21
|
-
deleteFile: function() {
|
|
22
|
-
return deleteFile;
|
|
23
|
-
},
|
|
24
|
-
getTempFilename: function() {
|
|
25
|
-
return getTempFilename;
|
|
26
|
-
},
|
|
27
|
-
isFunc: function() {
|
|
28
|
-
return isFunc;
|
|
29
|
-
},
|
|
30
|
-
isSafeFromPollution: function() {
|
|
31
|
-
return isSafeFromPollution;
|
|
32
|
-
},
|
|
33
|
-
moveFile: function() {
|
|
34
|
-
return moveFile;
|
|
35
|
-
},
|
|
36
|
-
parseFileName: function() {
|
|
37
|
-
return parseFileName;
|
|
38
|
-
},
|
|
39
|
-
parseFileNameExtension: function() {
|
|
40
|
-
return parseFileNameExtension;
|
|
41
|
-
},
|
|
42
|
-
promiseCallback: function() {
|
|
43
|
-
return promiseCallback;
|
|
44
|
-
},
|
|
45
|
-
saveBufferToFile: function() {
|
|
46
|
-
return saveBufferToFile;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
50
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
51
|
-
const _stream = require("stream");
|
|
52
|
-
function _interop_require_default(obj) {
|
|
53
|
-
return obj && obj.__esModule ? obj : {
|
|
54
|
-
default: obj
|
|
55
|
-
};
|
|
56
|
-
}
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { Readable } from 'stream';
|
|
57
4
|
// Parameters for safe file name parsing.
|
|
58
5
|
const SAFE_FILE_NAME_REGEX = /[^\w-]/g;
|
|
59
6
|
const MAX_EXTENSION_LENGTH = 3;
|
|
@@ -61,22 +8,26 @@ const MAX_EXTENSION_LENGTH = 3;
|
|
|
61
8
|
const TEMP_COUNTER_MAX = 65536;
|
|
62
9
|
const TEMP_PREFIX = 'tmp';
|
|
63
10
|
let tempCounter = 0;
|
|
64
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Logs message to console if options.debug option set to true.
|
|
13
|
+
*/ export const debugLog = (options, msg)=>{
|
|
65
14
|
const opts = options || {};
|
|
66
15
|
if (!opts.debug) return false;
|
|
67
16
|
console.log(`Express-file-upload: ${msg}`) // eslint-disable-line
|
|
68
17
|
;
|
|
69
18
|
return true;
|
|
70
19
|
};
|
|
71
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Generates unique temporary file name. e.g. tmp-5000-156788789789.
|
|
22
|
+
*/ export const getTempFilename = (prefix = TEMP_PREFIX)=>{
|
|
72
23
|
tempCounter = tempCounter >= TEMP_COUNTER_MAX ? 1 : tempCounter + 1;
|
|
73
24
|
return `${prefix}-${tempCounter}-${Date.now()}`;
|
|
74
25
|
};
|
|
75
|
-
const isFunc = (value)=>{
|
|
26
|
+
export const isFunc = (value)=>{
|
|
76
27
|
return typeof value === 'function';
|
|
77
28
|
};
|
|
78
29
|
const errorFunc = (resolve, reject)=>isFunc(reject) ? reject : resolve;
|
|
79
|
-
const promiseCallback = (resolve, reject)=>{
|
|
30
|
+
export const promiseCallback = (resolve, reject)=>{
|
|
80
31
|
let hasFired = false;
|
|
81
32
|
return (err)=>{
|
|
82
33
|
if (hasFired) {
|
|
@@ -90,7 +41,7 @@ const promiseCallback = (resolve, reject)=>{
|
|
|
90
41
|
// Used by isSafeFromPollution
|
|
91
42
|
const OBJECT_PROTOTYPE_KEYS = Object.getOwnPropertyNames(Object.prototype);
|
|
92
43
|
const ARRAY_PROTOTYPE_KEYS = Object.getOwnPropertyNames(Array.prototype);
|
|
93
|
-
const isSafeFromPollution = (base, key)=>{
|
|
44
|
+
export const isSafeFromPollution = (base, key)=>{
|
|
94
45
|
// We perform an instanceof check instead of Array.isArray as the former is more
|
|
95
46
|
// permissive for cases in which the object as an Array prototype but was not constructed
|
|
96
47
|
// via an Array constructor or literal.
|
|
@@ -98,7 +49,7 @@ const isSafeFromPollution = (base, key)=>{
|
|
|
98
49
|
const TOUCHES_OBJECT_PROTOTYPE = OBJECT_PROTOTYPE_KEYS.includes(key);
|
|
99
50
|
return !TOUCHES_ARRAY_PROTOTYPE && !TOUCHES_OBJECT_PROTOTYPE;
|
|
100
51
|
};
|
|
101
|
-
const buildFields = (instance, field, value)=>{
|
|
52
|
+
export const buildFields = (instance, field, value)=>{
|
|
102
53
|
// Do nothing if value is not set.
|
|
103
54
|
if (value === null || value === undefined) return instance;
|
|
104
55
|
instance = instance || Object.create(null);
|
|
@@ -121,18 +72,18 @@ const buildFields = (instance, field, value)=>{
|
|
|
121
72
|
}
|
|
122
73
|
return instance;
|
|
123
74
|
};
|
|
124
|
-
const checkAndMakeDir = (fileUploadOptions, filePath)=>{
|
|
75
|
+
export const checkAndMakeDir = (fileUploadOptions, filePath)=>{
|
|
125
76
|
if (!fileUploadOptions.createParentPath) return false;
|
|
126
77
|
// Check whether folder for the file exists.
|
|
127
|
-
const parentPath =
|
|
78
|
+
const parentPath = path.dirname(filePath);
|
|
128
79
|
// Create folder if it doesn't exist.
|
|
129
|
-
if (!
|
|
80
|
+
if (!fs.existsSync(parentPath)) fs.mkdirSync(parentPath, {
|
|
130
81
|
recursive: true
|
|
131
82
|
});
|
|
132
83
|
// Checks folder again and return a results.
|
|
133
|
-
return
|
|
84
|
+
return fs.existsSync(parentPath);
|
|
134
85
|
};
|
|
135
|
-
const deleteFile = (filePath, callback)=>
|
|
86
|
+
export const deleteFile = (filePath, callback)=>fs.unlink(filePath, callback);
|
|
136
87
|
const copyFile = (src, dst, callback)=>{
|
|
137
88
|
// cbCalled flag and runCb helps to run cb only once.
|
|
138
89
|
let cbCalled = false;
|
|
@@ -142,10 +93,10 @@ const copyFile = (src, dst, callback)=>{
|
|
|
142
93
|
callback(err);
|
|
143
94
|
};
|
|
144
95
|
// Create read stream
|
|
145
|
-
const readable =
|
|
96
|
+
const readable = fs.createReadStream(src);
|
|
146
97
|
readable.on('error', runCb);
|
|
147
98
|
// Create write stream
|
|
148
|
-
const writable =
|
|
99
|
+
const writable = fs.createWriteStream(dst);
|
|
149
100
|
writable.on('error', (err)=>{
|
|
150
101
|
readable.destroy();
|
|
151
102
|
runCb(err);
|
|
@@ -154,7 +105,7 @@ const copyFile = (src, dst, callback)=>{
|
|
|
154
105
|
// Copy file via piping streams.
|
|
155
106
|
readable.pipe(writable);
|
|
156
107
|
};
|
|
157
|
-
const moveFile = (src, dst, callback)=>
|
|
108
|
+
export const moveFile = (src, dst, callback)=>fs.rename(src, dst, (err)=>{
|
|
158
109
|
if (err) {
|
|
159
110
|
// Try to copy file if rename didn't work.
|
|
160
111
|
copyFile(src, dst, (cpErr)=>cpErr ? callback(cpErr) : deleteFile(src, callback));
|
|
@@ -163,19 +114,23 @@ const moveFile = (src, dst, callback)=>_fs.default.rename(src, dst, (err)=>{
|
|
|
163
114
|
// File was renamed successfully: Add true to the callback to indicate that.
|
|
164
115
|
callback(null, true);
|
|
165
116
|
});
|
|
166
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Save buffer data to a file.
|
|
119
|
+
* @param {Buffer} buffer - buffer to save to a file.
|
|
120
|
+
* @param {string} filePath - path to a file.
|
|
121
|
+
*/ export const saveBufferToFile = (buffer, filePath, callback)=>{
|
|
167
122
|
if (!Buffer.isBuffer(buffer)) {
|
|
168
123
|
return callback(new Error('buffer variable should be type of Buffer!'));
|
|
169
124
|
}
|
|
170
125
|
// Setup readable stream from buffer.
|
|
171
126
|
let streamData = buffer;
|
|
172
|
-
const readStream = new
|
|
127
|
+
const readStream = new Readable();
|
|
173
128
|
readStream._read = ()=>{
|
|
174
129
|
readStream.push(streamData);
|
|
175
130
|
streamData = null;
|
|
176
131
|
};
|
|
177
132
|
// Setup file system writable stream.
|
|
178
|
-
const fstream =
|
|
133
|
+
const fstream = fs.createWriteStream(filePath);
|
|
179
134
|
// console.log("Calling saveBuffer");
|
|
180
135
|
fstream.on('error', (err)=>{
|
|
181
136
|
// console.log("err cb")
|
|
@@ -212,7 +167,7 @@ const saveBufferToFile = (buffer, filePath, callback)=>{
|
|
|
212
167
|
}).join('');
|
|
213
168
|
}
|
|
214
169
|
};
|
|
215
|
-
const parseFileNameExtension = (preserveExtension, fileName)=>{
|
|
170
|
+
export const parseFileNameExtension = (preserveExtension, fileName)=>{
|
|
216
171
|
const defaultResult = {
|
|
217
172
|
name: fileName,
|
|
218
173
|
extension: ''
|
|
@@ -232,7 +187,7 @@ const parseFileNameExtension = (preserveExtension, fileName)=>{
|
|
|
232
187
|
extension: maxExtLength ? extension : ''
|
|
233
188
|
};
|
|
234
189
|
};
|
|
235
|
-
const parseFileName = (opts, fileName)=>{
|
|
190
|
+
export const parseFileName = (opts, fileName)=>{
|
|
236
191
|
// Check fileName argument
|
|
237
192
|
if (!fileName || typeof fileName !== 'string') return getTempFilename();
|
|
238
193
|
// Cut off file name if it's length more then 255.
|
|
@@ -249,4 +204,4 @@ const parseFileName = (opts, fileName)=>{
|
|
|
249
204
|
return name.replace(nameRegex, '').concat(extension);
|
|
250
205
|
};
|
|
251
206
|
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZXh0LWZpbGV1cGxvYWQvdXRpbGl0aWVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSdcblxuaW1wb3J0IHR5cGUgeyBOZXh0RmlsZVVwbG9hZE9wdGlvbnMgfSBmcm9tICcuJ1xuXG4vLyBQYXJhbWV0ZXJzIGZvciBzYWZlIGZpbGUgbmFtZSBwYXJzaW5nLlxuY29uc3QgU0FGRV9GSUxFX05BTUVfUkVHRVggPSAvW15cXHctXS9nXG5jb25zdCBNQVhfRVhURU5TSU9OX0xFTkdUSCA9IDNcblxuLy8gUGFyYW1ldGVycyB0byBnZW5lcmF0ZSB1bmlxdWUgdGVtcG9yYXJ5IGZpbGUgbmFtZXM6XG5jb25zdCBURU1QX0NPVU5URVJfTUFYID0gNjU1MzZcbmNvbnN0IFRFTVBfUFJFRklYID0gJ3RtcCdcbmxldCB0ZW1wQ291bnRlciA9IDBcblxuLyoqXG4gKiBMb2dzIG1lc3NhZ2UgdG8gY29uc29sZSBpZiBvcHRpb25zLmRlYnVnIG9wdGlvbiBzZXQgdG8gdHJ1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlYnVnTG9nID0gKG9wdGlvbnM6IE5leHRGaWxlVXBsb2FkT3B0aW9ucywgbXNnOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge31cbiAgaWYgKCFvcHRzLmRlYnVnKSByZXR1cm4gZmFsc2VcbiAgY29uc29sZS5sb2coYEV4cHJlc3MtZmlsZS11cGxvYWQ6ICR7bXNnfWApIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdW5pcXVlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIGUuZy4gdG1wLTUwMDAtMTU2Nzg4Nzg5Nzg5LlxuICovXG5leHBvcnQgY29uc3QgZ2V0VGVtcEZpbGVuYW1lID0gKHByZWZpeDogc3RyaW5nID0gVEVNUF9QUkVGSVgpID0+IHtcbiAgdGVtcENvdW50ZXIgPSB0ZW1wQ291bnRlciA+PSBURU1QX0NPVU5URVJfTUFYID8gMSA6IHRlbXBDb3VudGVyICsgMVxuICByZXR1cm4gYCR7cHJlZml4fS0ke3RlbXBDb3VudGVyfS0ke0RhdGUubm93KCl9YFxufVxuXG50eXBlIEZ1bmNUeXBlID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnlcbmV4cG9ydCBjb25zdCBpc0Z1bmMgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmNUeXBlID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG4vKipcbiAqIFNldCBlcnJvckZ1bmMgdG8gdGhlIHNhbWUgdmFsdWUgYXMgc3VjY2Vzc0Z1bmMgZm9yIGNhbGxiYWNrIG1vZGUuXG4gKi9cbnR5cGUgRXJyb3JGdW5jID0gKHJlc29sdmU6ICgpID0+IHZvaWQsIHJlamVjdDogKGVycjogRXJyb3IpID0+IHZvaWQpID0+IChlcnI6IEVycm9yKSA9PiB2b2lkXG5jb25zdCBlcnJvckZ1bmM6IEVycm9yRnVuYyA9IChyZXNvbHZlLCByZWplY3QpID0+IChpc0Z1bmMocmVqZWN0KSA/IHJlamVjdCA6IHJlc29sdmUpXG5cbi8qKlxuICogUmV0dXJuIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHByb21pc2UgcmVzb2xlL3JlamVjdCBhcmdzLlxuICogRW5zdXJlcyB0aGF0IGNhbGxiYWNrIGlzIGNhbGxlZCBvbmx5IG9uY2UuXG4gKi9cbnR5cGUgUHJvbWlzZUNhbGxiYWNrID0gKHJlc29sdmU6ICgpID0+IHZvaWQsIHJlamVjdDogKGVycjogRXJyb3IpID0+IHZvaWQpID0+IChlcnI6IEVycm9yKSA9PiB2b2lkXG5leHBvcnQgY29uc3QgcHJvbWlzZUNhbGxiYWNrOiBQcm9taXNlQ2FsbGJhY2sgPSAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIGxldCBoYXNGaXJlZCA9IGZhbHNlXG4gIHJldHVybiAoZXJyOiBFcnJvcikgPT4ge1xuICAgIGlmIChoYXNGaXJlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaGFzRmlyZWQgPSB0cnVlXG4gICAgcmV0dXJuIGVyciA/IGVycm9yRnVuYyhyZXNvbHZlLCByZWplY3QpKGVycikgOiByZXNvbHZlKClcbiAgfVxufVxuXG4vLyBUaGUgZGVmYXVsdCBwcm90b3R5cGVzIGZvciBib3RoIG9iamVjdHMgYW5kIGFycmF5cy5cbi8vIFVzZWQgYnkgaXNTYWZlRnJvbVBvbGx1dGlvblxuY29uc3QgT0JKRUNUX1BST1RPVFlQRV9LRVlTID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSlcbmNvbnN0IEFSUkFZX1BST1RPVFlQRV9LRVlTID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQXJyYXkucHJvdG90eXBlKVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGtleSBpbnNlcnRpb24gaW50byBhbiBvYmplY3QgY291bGQgcmVzdWx0IGluIGEgcHJvdG90eXBlIHBvbGx1dGlvblxuICovXG50eXBlIElzU2FmZUZyb21Qb2xsdXRpb24gPSAoYmFzZTogYW55LCBrZXk6IHN0cmluZykgPT4gYm9vbGVhblxuZXhwb3J0IGNvbnN0IGlzU2FmZUZyb21Qb2xsdXRpb246IElzU2FmZUZyb21Qb2xsdXRpb24gPSAoYmFzZSwga2V5KSA9PiB7XG4gIC8vIFdlIHBlcmZvcm0gYW4gaW5zdGFuY2VvZiBjaGVjayBpbnN0ZWFkIG9mIEFycmF5LmlzQXJyYXkgYXMgdGhlIGZvcm1lciBpcyBtb3JlXG4gIC8vIHBlcm1pc3NpdmUgZm9yIGNhc2VzIGluIHdoaWNoIHRoZSBvYmplY3QgYXMgYW4gQXJyYXkgcHJvdG90eXBlIGJ1dCB3YXMgbm90IGNvbnN0cnVjdGVkXG4gIC8vIHZpYSBhbiBBcnJheSBjb25zdHJ1Y3RvciBvciBsaXRlcmFsLlxuICBjb25zdCBUT1VDSEVTX0FSUkFZX1BST1RPVFlQRSA9IGJhc2UgaW5zdGFuY2VvZiBBcnJheSAmJiBBUlJBWV9QUk9UT1RZUEVfS0VZUy5pbmNsdWRlcyhrZXkpXG4gIGNvbnN0IFRPVUNIRVNfT0JKRUNUX1BST1RPVFlQRSA9IE9CSkVDVF9QUk9UT1RZUEVfS0VZUy5pbmNsdWRlcyhrZXkpXG5cbiAgcmV0dXJuICFUT1VDSEVTX0FSUkFZX1BST1RPVFlQRSAmJiAhVE9VQ0hFU19PQkpFQ1RfUFJPVE9UWVBFXG59XG5cbi8qKlxuICogQnVpbGQgcmVxdWVzdCBmaWVsZC9maWxlIG9iamVjdHMgdG8gcmV0dXJuXG4gKi9cbnR5cGUgQnVpbGRGaWVsZHMgPSAoaW5zdGFuY2U6IGFueSwgZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gYW55XG5leHBvcnQgY29uc3QgYnVpbGRGaWVsZHM6IEJ1aWxkRmllbGRzID0gKGluc3RhbmNlLCBmaWVsZCwgdmFsdWUpID0+IHtcbiAgLy8gRG8gbm90aGluZyBpZiB2YWx1ZSBpcyBub3Qgc2V0LlxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGluc3RhbmNlXG4gIGluc3RhbmNlID0gaW5zdGFuY2UgfHwgT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4gIGlmICghaXNTYWZlRnJvbVBvbGx1dGlvbihpbnN0YW5jZSwgZmllbGQpKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlXG4gIH1cbiAgLy8gTm9uLWFycmF5IGZpZWxkc1xuICBpZiAoIWluc3RhbmNlW2ZpZWxkXSkge1xuICAgIGluc3RhbmNlW2ZpZWxkXSA9IHZhbHVlXG4gICAgcmV0dXJuIGluc3RhbmNlXG4gIH1cbiAgLy8gQXJyYXkgZmllbGRzXG4gIGlmIChpbnN0YW5jZVtmaWVsZF0gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIGluc3RhbmNlW2ZpZWxkXS5wdXNoKHZhbHVlKVxuICB9IGVsc2Uge1xuICAgIGluc3RhbmNlW2ZpZWxkXSA9IFtpbnN0YW5jZVtmaWVsZF0sIHZhbHVlXVxuICB9XG4gIHJldHVybiBpbnN0YW5jZVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmb2xkZXIgaWYgaXQgZG9lcyBub3QgZXhpc3RcbiAqIGZvciBmaWxlIHNwZWNpZmllZCBpbiB0aGUgcGF0aCB2YXJpYWJsZVxuICovXG50eXBlIENoZWNrQW5kTWFrZURpciA9IChmaWxlVXBsb2FkT3B0aW9uczogTmV4dEZpbGVVcGxvYWRPcHRpb25zLCBmaWxlUGF0aDogc3RyaW5nKSA9PiBib29sZWFuXG5leHBvcnQgY29uc3QgY2hlY2tBbmRNYWtlRGlyOiBDaGVja0FuZE1ha2VEaXIgPSAoZmlsZVVwbG9hZE9wdGlvbnMsIGZpbGVQYXRoKSA9PiB7XG4gIGlmICghZmlsZVVwbG9hZE9wdGlvbnMuY3JlYXRlUGFyZW50UGF0aCkgcmV0dXJuIGZhbHNlXG4gIC8vIENoZWNrIHdoZXRoZXIgZm9sZGVyIGZvciB0aGUgZmlsZSBleGlzdHMuXG4gIGNvbnN0IHBhcmVudFBhdGggPSBwYXRoLmRpcm5hbWUoZmlsZVBhdGgpXG4gIC8vIENyZWF0ZSBmb2xkZXIgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKHBhcmVudFBhdGgpKSBmcy5ta2RpclN5bmMocGFyZW50UGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgLy8gQ2hlY2tzIGZvbGRlciBhZ2FpbiBhbmQgcmV0dXJuIGEgcmVzdWx0cy5cbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGFyZW50UGF0aClcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBmaWxlLlxuICovXG50eXBlIERlbGV0ZUZpbGUgPSAoZmlsZVBhdGg6IHN0cmluZywgY2FsbGJhY2s6IChhcmdzOiBhbnkpID0+IHZvaWQpID0+IHZvaWRcbmV4cG9ydCBjb25zdCBkZWxldGVGaWxlOiBEZWxldGVGaWxlID0gKGZpbGVQYXRoLCBjYWxsYmFjazogKGFyZ3MpID0+IHZvaWQpID0+XG4gIGZzLnVubGluayhmaWxlUGF0aCwgY2FsbGJhY2spXG5cbi8qKlxuICogQ29weSBmaWxlIHZpYSBzdHJlYW1zXG4gKi9cbnR5cGUgQ29weUZpbGUgPSAoc3JjOiBzdHJpbmcsIGRzdDogc3RyaW5nLCBjYWxsYmFjazogKGVycjogRXJyb3IpID0+IHZvaWQpID0+IHZvaWRcbmNvbnN0IGNvcHlGaWxlOiBDb3B5RmlsZSA9IChzcmMsIGRzdCwgY2FsbGJhY2spID0+IHtcbiAgLy8gY2JDYWxsZWQgZmxhZyBhbmQgcnVuQ2IgaGVscHMgdG8gcnVuIGNiIG9ubHkgb25jZS5cbiAgbGV0IGNiQ2FsbGVkID0gZmFsc2VcbiAgY29uc3QgcnVuQ2IgPSAoZXJyPzogRXJyb3IpID0+IHtcbiAgICBpZiAoY2JDYWxsZWQpIHJldHVyblxuICAgIGNiQ2FsbGVkID0gdHJ1ZVxuICAgIGNhbGxiYWNrKGVycilcbiAgfVxuICAvLyBDcmVhdGUgcmVhZCBzdHJlYW1cbiAgY29uc3QgcmVhZGFibGUgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHNyYylcbiAgcmVhZGFibGUub24oJ2Vycm9yJywgcnVuQ2IpXG4gIC8vIENyZWF0ZSB3cml0ZSBzdHJlYW1cbiAgY29uc3Qgd3JpdGFibGUgPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShkc3QpXG4gIHdyaXRhYmxlLm9uKCdlcnJvcicsIChlcnI6IEVycm9yKSA9PiB7XG4gICAgcmVhZGFibGUuZGVzdHJveSgpXG4gICAgcnVuQ2IoZXJyKVxuICB9KVxuICB3cml0YWJsZS5vbignY2xvc2UnLCAoKSA9PiBydW5DYigpKVxuICAvLyBDb3B5IGZpbGUgdmlhIHBpcGluZyBzdHJlYW1zLlxuICByZWFkYWJsZS5waXBlKHdyaXRhYmxlKVxufVxuXG4vKipcbiAqIG1vdmVGaWxlOiBtb3ZlcyB0aGUgZmlsZSBmcm9tIHNyYyB0byBkc3QuXG4gKiBGaXJzdGx5IHRyeWluZyB0byByZW5hbWUgdGhlIGZpbGUgaWYgbm8gbHVjayBjb3B5aW5nIGl0IHRvIGRzdCBhbmQgdGhlbiBkZWxldGluZyBzcmMuXG4gKi9cbnR5cGUgTW92ZUZpbGUgPSAoXG4gIHNyYzogc3RyaW5nLFxuICBkc3Q6IHN0cmluZyxcbiAgY2FsbGJhY2s6IChlcnI6IEVycm9yLCByZW5hbWVkPzogYm9vbGVhbikgPT4gdm9pZCxcbikgPT4gdm9pZFxuZXhwb3J0IGNvbnN0IG1vdmVGaWxlOiBNb3ZlRmlsZSA9IChzcmMsIGRzdCwgY2FsbGJhY2spID0+XG4gIGZzLnJlbmFtZShzcmMsIGRzdCwgKGVycikgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIC8vIFRyeSB0byBjb3B5IGZpbGUgaWYgcmVuYW1lIGRpZG4ndCB3b3JrLlxuICAgICAgY29weUZpbGUoc3JjLCBkc3QsIChjcEVycikgPT4gKGNwRXJyID8gY2FsbGJhY2soY3BFcnIpIDogZGVsZXRlRmlsZShzcmMsIGNhbGxiYWNrKSkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gRmlsZSB3YXMgcmVuYW1lZCBzdWNjZXNzZnVsbHk6IEFkZCB0cnVlIHRvIHRoZSBjYWxsYmFjayB0byBpbmRpY2F0ZSB0aGF0LlxuICAgIGNhbGxiYWNrKG51bGwsIHRydWUpXG4gIH0pXG5cbi8qKlxuICogU2F2ZSBidWZmZXIgZGF0YSB0byBhIGZpbGUuXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIC0gYnVmZmVyIHRvIHNhdmUgdG8gYSBmaWxlLlxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVQYXRoIC0gcGF0aCB0byBhIGZpbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzYXZlQnVmZmVyVG9GaWxlID0gKGJ1ZmZlciwgZmlsZVBhdGgsIGNhbGxiYWNrKSA9PiB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdidWZmZXIgdmFyaWFibGUgc2hvdWxkIGJlIHR5cGUgb2YgQnVmZmVyIScpKVxuICB9XG4gIC8vIFNldHVwIHJlYWRhYmxlIHN0cmVhbSBmcm9tIGJ1ZmZlci5cbiAgbGV0IHN0cmVhbURhdGEgPSBidWZmZXJcbiAgY29uc3QgcmVhZFN0cmVhbSA9IG5ldyBSZWFkYWJsZSgpXG4gIHJlYWRTdHJlYW0uX3JlYWQgPSAoKSA9PiB7XG4gICAgcmVhZFN0cmVhbS5wdXNoKHN0cmVhbURhdGEpXG4gICAgc3RyZWFtRGF0YSA9IG51bGxcbiAgfVxuICAvLyBTZXR1cCBmaWxlIHN5c3RlbSB3cml0YWJsZSBzdHJlYW0uXG4gIGNvbnN0IGZzdHJlYW0gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShmaWxlUGF0aClcbiAgLy8gY29uc29sZS5sb2coXCJDYWxsaW5nIHNhdmVCdWZmZXJcIik7XG4gIGZzdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKFwiZXJyIGNiXCIpXG4gICAgY2FsbGJhY2soZXJyKVxuICB9KVxuICBmc3RyZWFtLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAvLyBjb25zb2xlLmxvZyhcImNsb3NlIGNiXCIpO1xuICAgIGNhbGxiYWNrKClcbiAgfSlcbiAgLy8gQ29weSBmaWxlIHZpYSBwaXBpbmcgc3RyZWFtcy5cbiAgcmVhZFN0cmVhbS5waXBlKGZzdHJlYW0pXG59XG5cbi8qKlxuICogRGVjb2RlcyB1cmlFbmNvZGVkIGZpbGUgbmFtZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG1pZGRsZXdhcmUgb3B0aW9ucy5cbiAqIEBwYXJhbSBmaWxlTmFtZSB7U3RyaW5nfSAtIGZpbGUgbmFtZSB0byBkZWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5jb25zdCB1cmlEZWNvZGVGaWxlTmFtZSA9IChvcHRzLCBmaWxlTmFtZSkgPT4ge1xuICBpZiAoIW9wdHMgfHwgIW9wdHMudXJpRGVjb2RlRmlsZU5hbWVzKSB7XG4gICAgcmV0dXJuIGZpbGVOYW1lXG4gIH1cbiAgLy8gRGVjb2RlIGZpbGUgbmFtZSBmcm9tIFVSSSB3aXRoIGNoZWNraW5nIFVSSSBtYWxmb3JtZWQgZXJyb3JzLlxuICAvLyBTZWUgSXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JpY2hhcmRnaXJnZXMvZXhwcmVzcy1maWxldXBsb2FkL2lzc3Vlcy8zNDIuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChmaWxlTmFtZSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgbWF0Y2hlciA9IC8oJVthLWZcXGRdezJ9KS9naVxuICAgIHJldHVybiBmaWxlTmFtZVxuICAgICAgLnNwbGl0KG1hdGNoZXIpXG4gICAgICAubWFwKChzdHIpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0cilcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuICcnXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuam9pbignJylcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBmaWxlbmFtZSBhbmQgZXh0ZW5zaW9uIGFuZCByZXR1cm5zIG9iamVjdCB7bmFtZSwgZXh0ZW5zaW9ufS5cbiAqL1xudHlwZSBQYXJzZUZpbGVOYW1lRXh0ZW5zaW9uID0gKFxuICBwcmVzZXJ2ZUV4dGVuc2lvbjogYm9vbGVhbiB8IG51bWJlcixcbiAgZmlsZU5hbWU6IHN0cmluZyxcbikgPT4ge1xuICBleHRlbnNpb246IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cbmV4cG9ydCBjb25zdCBwYXJzZUZpbGVOYW1lRXh0ZW5zaW9uOiBQYXJzZUZpbGVOYW1lRXh0ZW5zaW9uID0gKHByZXNlcnZlRXh0ZW5zaW9uLCBmaWxlTmFtZSkgPT4ge1xuICBjb25zdCBkZWZhdWx0UmVzdWx0ID0ge1xuICAgIG5hbWU6IGZpbGVOYW1lLFxuICAgIGV4dGVuc2lvbjogJycsXG4gIH1cbiAgaWYgKCFwcmVzZXJ2ZUV4dGVuc2lvbikgcmV0dXJuIGRlZmF1bHRSZXN1bHRcblxuICAvLyBEZWZpbmUgbWF4aW11bSBleHRlbnNpb24gbGVuZ3RoXG4gIGNvbnN0IG1heEV4dExlbmd0aCA9XG4gICAgdHlwZW9mIHByZXNlcnZlRXh0ZW5zaW9uID09PSAnYm9vbGVhbicgPyBNQVhfRVhURU5TSU9OX0xFTkdUSCA6IHByZXNlcnZlRXh0ZW5zaW9uXG5cbiAgY29uc3QgbmFtZVBhcnRzID0gZmlsZU5hbWUuc3BsaXQoJy4nKVxuICBpZiAobmFtZVBhcnRzLmxlbmd0aCA8IDIpIHJldHVybiBkZWZhdWx0UmVzdWx0XG5cbiAgbGV0IGV4dGVuc2lvbiA9IG5hbWVQYXJ0cy5wb3AoKVxuICBpZiAoZXh0ZW5zaW9uLmxlbmd0aCA+IG1heEV4dExlbmd0aCAmJiBtYXhFeHRMZW5ndGggPiAwKSB7XG4gICAgbmFtZVBhcnRzW25hbWVQYXJ0cy5sZW5ndGggLSAxXSArPSAnLicgKyBleHRlbnNpb24uc3Vic3RyKDAsIGV4dGVuc2lvbi5sZW5ndGggLSBtYXhFeHRMZW5ndGgpXG4gICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uLnN1YnN0cigtbWF4RXh0TGVuZ3RoKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lUGFydHMuam9pbignLicpLFxuICAgIGV4dGVuc2lvbjogbWF4RXh0TGVuZ3RoID8gZXh0ZW5zaW9uIDogJycsXG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBmaWxlIG5hbWUgYW5kIGV4dGVuc2lvbi5cbiAqL1xudHlwZSBQYXJzZUZpbGVOYW1lID0gKG9wdHM6IE5leHRGaWxlVXBsb2FkT3B0aW9ucywgZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nXG5leHBvcnQgY29uc3QgcGFyc2VGaWxlTmFtZTogUGFyc2VGaWxlTmFtZSA9IChvcHRzLCBmaWxlTmFtZSkgPT4ge1xuICAvLyBDaGVjayBmaWxlTmFtZSBhcmd1bWVudFxuICBpZiAoIWZpbGVOYW1lIHx8IHR5cGVvZiBmaWxlTmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBnZXRUZW1wRmlsZW5hbWUoKVxuICAvLyBDdXQgb2ZmIGZpbGUgbmFtZSBpZiBpdCdzIGxlbmd0aCBtb3JlIHRoZW4gMjU1LlxuICBsZXQgcGFyc2VkTmFtZSA9IGZpbGVOYW1lLmxlbmd0aCA8PSAyNTUgPyBmaWxlTmFtZSA6IGZpbGVOYW1lLnN1YnN0cigwLCAyNTUpXG4gIC8vIERlY29kZSBmaWxlIG5hbWUgaWYgdXJpRGVjb2RlRmlsZU5hbWVzIG9wdGlvbiBzZXQgdHJ1ZS5cbiAgcGFyc2VkTmFtZSA9IHVyaURlY29kZUZpbGVOYW1lKG9wdHMsIHBhcnNlZE5hbWUpXG4gIC8vIFN0b3AgcGFyc2luZyBmaWxlIG5hbWUgaWYgc2FmZUZpbGVOYW1lcyBvcHRpb25zIGhhc24ndCBiZWVuIHNldC5cbiAgaWYgKCFvcHRzLnNhZmVGaWxlTmFtZXMpIHJldHVybiBwYXJzZWROYW1lXG4gIC8vIFNldCByZWd1bGFyIGV4cHJlc3Npb24gZm9yIHRoZSBmaWxlIG5hbWUuXG4gIGNvbnN0IG5hbWVSZWdleCA9XG4gICAgdHlwZW9mIG9wdHMuc2FmZUZpbGVOYW1lcyA9PT0gJ29iamVjdCcgJiYgb3B0cy5zYWZlRmlsZU5hbWVzIGluc3RhbmNlb2YgUmVnRXhwXG4gICAgICA/IG9wdHMuc2FmZUZpbGVOYW1lc1xuICAgICAgOiBTQUZFX0ZJTEVfTkFNRV9SRUdFWFxuICAvLyBQYXJzZSBmaWxlIG5hbWUgZXh0ZW5zaW9uLlxuICBsZXQgeyBuYW1lLCBleHRlbnNpb24gfSA9IHBhcnNlRmlsZU5hbWVFeHRlbnNpb24ob3B0cy5wcmVzZXJ2ZUV4dGVuc2lvbiwgcGFyc2VkTmFtZSlcbiAgaWYgKGV4dGVuc2lvbi5sZW5ndGgpIGV4dGVuc2lvbiA9ICcuJyArIGV4dGVuc2lvbi5yZXBsYWNlKG5hbWVSZWdleCwgJycpXG5cbiAgcmV0dXJuIG5hbWUucmVwbGFjZShuYW1lUmVnZXgsICcnKS5jb25jYXQoZXh0ZW5zaW9uKVxufVxuIl0sIm5hbWVzIjpbImJ1aWxkRmllbGRzIiwiY2hlY2tBbmRNYWtlRGlyIiwiZGVidWdMb2ciLCJkZWxldGVGaWxlIiwiZ2V0VGVtcEZpbGVuYW1lIiwiaXNGdW5jIiwiaXNTYWZlRnJvbVBvbGx1dGlvbiIsIm1vdmVGaWxlIiwicGFyc2VGaWxlTmFtZSIsInBhcnNlRmlsZU5hbWVFeHRlbnNpb24iLCJwcm9taXNlQ2FsbGJhY2siLCJzYXZlQnVmZmVyVG9GaWxlIiwiU0FGRV9GSUxFX05BTUVfUkVHRVgiLCJNQVhfRVhURU5TSU9OX0xFTkdUSCIsIlRFTVBfQ09VTlRFUl9NQVgiLCJURU1QX1BSRUZJWCIsInRlbXBDb3VudGVyIiwib3B0aW9ucyIsIm1zZyIsIm9wdHMiLCJkZWJ1ZyIsImNvbnNvbGUiLCJsb2ciLCJwcmVmaXgiLCJEYXRlIiwibm93IiwidmFsdWUiLCJlcnJvckZ1bmMiLCJyZXNvbHZlIiwicmVqZWN0IiwiaGFzRmlyZWQiLCJlcnIiLCJPQkpFQ1RfUFJPVE9UWVBFX0tFWVMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvdG90eXBlIiwiQVJSQVlfUFJPVE9UWVBFX0tFWVMiLCJBcnJheSIsImJhc2UiLCJrZXkiLCJUT1VDSEVTX0FSUkFZX1BST1RPVFlQRSIsImluY2x1ZGVzIiwiVE9VQ0hFU19PQkpFQ1RfUFJPVE9UWVBFIiwiaW5zdGFuY2UiLCJmaWVsZCIsInVuZGVmaW5lZCIsImNyZWF0ZSIsInB1c2giLCJmaWxlVXBsb2FkT3B0aW9ucyIsImZpbGVQYXRoIiwiY3JlYXRlUGFyZW50UGF0aCIsInBhcmVudFBhdGgiLCJwYXRoIiwiZGlybmFtZSIsImZzIiwiZXhpc3RzU3luYyIsIm1rZGlyU3luYyIsInJlY3Vyc2l2ZSIsImNhbGxiYWNrIiwidW5saW5rIiwiY29weUZpbGUiLCJzcmMiLCJkc3QiLCJjYkNhbGxlZCIsInJ1bkNiIiwicmVhZGFibGUiLCJjcmVhdGVSZWFkU3RyZWFtIiwib24iLCJ3cml0YWJsZSIsImNyZWF0ZVdyaXRlU3RyZWFtIiwiZGVzdHJveSIsInBpcGUiLCJyZW5hbWUiLCJjcEVyciIsImJ1ZmZlciIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiRXJyb3IiLCJzdHJlYW1EYXRhIiwicmVhZFN0cmVhbSIsIlJlYWRhYmxlIiwiX3JlYWQiLCJmc3RyZWFtIiwidXJpRGVjb2RlRmlsZU5hbWUiLCJmaWxlTmFtZSIsInVyaURlY29kZUZpbGVOYW1lcyIsImRlY29kZVVSSUNvbXBvbmVudCIsIm1hdGNoZXIiLCJzcGxpdCIsIm1hcCIsInN0ciIsImpvaW4iLCJwcmVzZXJ2ZUV4dGVuc2lvbiIsImRlZmF1bHRSZXN1bHQiLCJuYW1lIiwiZXh0ZW5zaW9uIiwibWF4RXh0TGVuZ3RoIiwibmFtZVBhcnRzIiwibGVuZ3RoIiwicG9wIiwic3Vic3RyIiwicGFyc2VkTmFtZSIsInNhZmVGaWxlTmFtZXMiLCJuYW1lUmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwiY29uY2F0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQW9GYUEsV0FBVztlQUFYQTs7SUEyQkFDLGVBQWU7ZUFBZkE7O0lBN0ZBQyxRQUFRO2VBQVJBOztJQTJHQUMsVUFBVTtlQUFWQTs7SUFqR0FDLGVBQWU7ZUFBZkE7O0lBTUFDLE1BQU07ZUFBTkE7O0lBb0NBQyxtQkFBbUI7ZUFBbkJBOztJQTZGQUMsUUFBUTtlQUFSQTs7SUErR0FDLGFBQWE7ZUFBYkE7O0lBOUJBQyxzQkFBc0I7ZUFBdEJBOztJQW5NQUMsZUFBZTtlQUFmQTs7SUFrSUFDLGdCQUFnQjtlQUFoQkE7OzsyREFuTEU7NkRBQ0U7d0JBQ1E7Ozs7OztBQUl6Qix5Q0FBeUM7QUFDekMsTUFBTUMsdUJBQXVCO0FBQzdCLE1BQU1DLHVCQUF1QjtBQUU3QixzREFBc0Q7QUFDdEQsTUFBTUMsbUJBQW1CO0FBQ3pCLE1BQU1DLGNBQWM7QUFDcEIsSUFBSUMsY0FBYztBQUtYLE1BQU1kLFdBQVcsQ0FBQ2UsU0FBZ0NDO0lBQ3ZELE1BQU1DLE9BQU9GLFdBQVcsQ0FBQztJQUN6QixJQUFJLENBQUNFLEtBQUtDLEtBQUssRUFBRSxPQUFPO0lBQ3hCQyxRQUFRQyxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRUosSUFBSSxDQUFDLEVBQUUsc0JBQXNCOztJQUNqRSxPQUFPO0FBQ1Q7QUFLTyxNQUFNZCxrQkFBa0IsQ0FBQ21CLFNBQWlCUixXQUFXO0lBQzFEQyxjQUFjQSxlQUFlRixtQkFBbUIsSUFBSUUsY0FBYztJQUNsRSxPQUFPLENBQUMsRUFBRU8sT0FBTyxDQUFDLEVBQUVQLFlBQVksQ0FBQyxFQUFFUSxLQUFLQyxHQUFHLEdBQUcsQ0FBQztBQUNq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
|
|
207
|
+
//# sourceMappingURL=utilities.js.map
|