@rebasepro/server-core 0.5.0 → 0.6.1
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/{server-core/src/api → api}/errors.d.ts +5 -2
- package/dist/{server-core/src/api → api}/rest/api-generator.d.ts +8 -2
- package/dist/{server-core/src/api → api}/types.d.ts +2 -0
- package/dist/auth/admin-user-ops.d.ts +79 -0
- package/dist/{server-core/src/auth → auth}/api-keys/index.d.ts +2 -2
- package/dist/{server-core/src/auth → auth}/auth-hooks.d.ts +37 -9
- package/dist/{server-core/src/auth → auth}/builtin-auth-adapter.d.ts +4 -4
- package/dist/{server-core/src/auth → auth}/index.d.ts +5 -2
- package/dist/auth/mfa-routes.d.ts +6 -0
- package/dist/auth/reset-password-admin.d.ts +29 -0
- package/dist/auth/session-routes.d.ts +25 -0
- package/dist/backend-CIxN4FVm.js +15 -0
- package/dist/backend-CIxN4FVm.js.map +1 -0
- package/dist/chunk-Dze3rakg.js +42 -0
- package/dist/{server-core/src/cron → cron}/cron-scheduler.d.ts +1 -1
- package/dist/dist-CZKP-Xz4.js +832 -0
- package/dist/dist-CZKP-Xz4.js.map +1 -0
- package/dist/env.d.ts +102 -0
- package/dist/from-VbwD7xRf.js +3849 -0
- package/dist/from-VbwD7xRf.js.map +1 -0
- package/dist/{server-core/src/index.d.ts → index.d.ts} +1 -0
- package/dist/index.es.js +60872 -50462
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +73156 -51298
- package/dist/index.umd.js.map +1 -1
- package/dist/init/docs.d.ts +4 -0
- package/dist/init/health.d.ts +2 -0
- package/dist/init/middlewares.d.ts +10 -0
- package/dist/init/shutdown.d.ts +11 -0
- package/dist/init/storage.d.ts +5 -0
- package/dist/{server-core/src/init.d.ts → init.d.ts} +4 -4
- package/dist/jwt-DHcQRGC3.js +4168 -0
- package/dist/jwt-DHcQRGC3.js.map +1 -0
- package/dist/logger-BYU66ENZ.js +94 -0
- package/dist/logger-BYU66ENZ.js.map +1 -0
- package/dist/ms-BeBSuOXN.js +125 -0
- package/dist/ms-BeBSuOXN.js.map +1 -0
- package/dist/multipart-parser-CedBDOeC.js +299 -0
- package/dist/multipart-parser-CedBDOeC.js.map +1 -0
- package/dist/src-COaj0G3P.js +1182 -0
- package/dist/src-COaj0G3P.js.map +1 -0
- package/dist/{server-core/src/storage → storage}/image-transform.d.ts +3 -1
- package/dist/utils/request-id.d.ts +4 -0
- package/package.json +29 -29
- package/src/api/collections_for_test/callbacks_test_collection.ts +7 -6
- package/src/api/errors.ts +75 -19
- package/src/api/graphql/graphql-schema-generator.ts +15 -10
- package/src/api/logs-routes.ts +5 -2
- package/src/api/rest/api-generator-count.test.ts +21 -10
- package/src/api/rest/api-generator.ts +102 -26
- package/src/api/rest/query-parser.ts +18 -12
- package/src/api/server.ts +12 -1
- package/src/api/types.ts +2 -0
- package/src/auth/adapter-middleware.ts +17 -10
- package/src/auth/admin-user-ops.ts +236 -0
- package/src/auth/api-keys/api-key-middleware.ts +15 -9
- package/src/auth/api-keys/api-key-permission-guard.ts +1 -1
- package/src/auth/api-keys/api-key-routes.ts +3 -3
- package/src/auth/api-keys/api-key-store.ts +14 -8
- package/src/auth/api-keys/index.ts +2 -2
- package/src/auth/apple-oauth.ts +4 -3
- package/src/auth/auth-hooks.ts +50 -10
- package/src/auth/bitbucket-oauth.ts +5 -4
- package/src/auth/builtin-auth-adapter.ts +60 -39
- package/src/auth/custom-auth-adapter.ts +4 -5
- package/src/auth/discord-oauth.ts +5 -4
- package/src/auth/facebook-oauth.ts +5 -4
- package/src/auth/github-oauth.ts +6 -5
- package/src/auth/gitlab-oauth.ts +5 -4
- package/src/auth/google-oauth.ts +2 -1
- package/src/auth/index.ts +6 -2
- package/src/auth/jwt.ts +5 -4
- package/src/auth/linkedin-oauth.ts +4 -3
- package/src/auth/mfa-routes.ts +299 -0
- package/src/auth/mfa.ts +2 -1
- package/src/auth/microsoft-oauth.ts +5 -4
- package/src/auth/middleware.ts +5 -4
- package/src/auth/rate-limiter.ts +1 -1
- package/src/auth/reset-password-admin.ts +144 -0
- package/src/auth/rls-scope.ts +1 -1
- package/src/auth/routes.ts +52 -596
- package/src/auth/session-routes.ts +341 -0
- package/src/auth/slack-oauth.ts +6 -5
- package/src/auth/spotify-oauth.ts +5 -4
- package/src/auth/twitter-oauth.ts +4 -3
- package/src/collections/loader.ts +5 -4
- package/src/cron/cron-scheduler.test.ts +23 -11
- package/src/cron/cron-scheduler.ts +14 -8
- package/src/cron/cron-store.ts +1 -1
- package/src/email/smtp-email-service.ts +3 -2
- package/src/env.ts +11 -10
- package/src/index.ts +1 -0
- package/src/init/docs.ts +47 -0
- package/src/init/health.ts +37 -0
- package/src/init/middlewares.ts +61 -0
- package/src/init/shutdown.ts +56 -0
- package/src/init/storage.ts +57 -0
- package/src/init.ts +85 -279
- package/src/serve-spa.ts +12 -5
- package/src/services/driver-registry.ts +4 -3
- package/src/storage/S3StorageController.ts +1 -2
- package/src/storage/image-transform.ts +25 -10
- package/src/storage/routes.ts +34 -11
- package/src/storage/storage-registry.ts +4 -3
- package/src/storage/tus-handler.ts +12 -12
- package/src/utils/request-id.ts +40 -0
- package/src/utils/request-logger.ts +6 -0
- package/test/api-generator.test.ts +90 -2
- package/test/api-key-permission-guard.test.ts +24 -12
- package/test/auth-routes.test.ts +5 -3
- package/test/backend-hooks-data.test.ts +99 -30
- package/test/custom-auth-adapter.test.ts +16 -15
- package/test/email-templates.test.ts +10 -5
- package/test/env.test.ts +10 -10
- package/test/function-loader.test.ts +7 -4
- package/test/graphql-schema-generator.test.ts +554 -0
- package/test/jwt-security.test.ts +1 -1
- package/test/query-parser.test.ts +0 -1
- package/test/reset-password-admin.test.ts +113 -0
- package/test/singleton.test.ts +5 -5
- package/test/smtp-email-service.test.ts +21 -21
- package/test/webhook-service.test.ts +22 -11
- package/tsconfig.json +2 -0
- package/tsconfig.prod.json +3 -0
- package/vite.config.ts +10 -5
- package/dist/common/src/collections/CollectionRegistry.d.ts +0 -56
- package/dist/common/src/collections/default-collections.d.ts +0 -9
- package/dist/common/src/collections/index.d.ts +0 -2
- package/dist/common/src/data/buildRebaseData.d.ts +0 -14
- package/dist/common/src/data/query_builder.d.ts +0 -55
- package/dist/common/src/index.d.ts +0 -4
- package/dist/common/src/util/builders.d.ts +0 -57
- package/dist/common/src/util/callbacks.d.ts +0 -6
- package/dist/common/src/util/collections.d.ts +0 -11
- package/dist/common/src/util/common.d.ts +0 -2
- package/dist/common/src/util/conditions.d.ts +0 -26
- package/dist/common/src/util/entities.d.ts +0 -58
- package/dist/common/src/util/enums.d.ts +0 -3
- package/dist/common/src/util/index.d.ts +0 -16
- package/dist/common/src/util/navigation_from_path.d.ts +0 -34
- package/dist/common/src/util/navigation_utils.d.ts +0 -20
- package/dist/common/src/util/parent_references_from_path.d.ts +0 -6
- package/dist/common/src/util/paths.d.ts +0 -14
- package/dist/common/src/util/permissions.d.ts +0 -14
- package/dist/common/src/util/references.d.ts +0 -2
- package/dist/common/src/util/relations.d.ts +0 -22
- package/dist/common/src/util/resolutions.d.ts +0 -72
- package/dist/common/src/util/storage.d.ts +0 -24
- package/dist/index-Cr1D21av.js +0 -49
- package/dist/index-Cr1D21av.js.map +0 -1
- package/dist/server-core/src/auth/admin-routes.d.ts +0 -27
- package/dist/server-core/src/env.d.ts +0 -137
- package/dist/types/src/controllers/analytics_controller.d.ts +0 -7
- package/dist/types/src/controllers/auth.d.ts +0 -104
- package/dist/types/src/controllers/client.d.ts +0 -168
- package/dist/types/src/controllers/collection_registry.d.ts +0 -46
- package/dist/types/src/controllers/customization_controller.d.ts +0 -60
- package/dist/types/src/controllers/data.d.ts +0 -207
- package/dist/types/src/controllers/data_driver.d.ts +0 -218
- package/dist/types/src/controllers/database_admin.d.ts +0 -11
- package/dist/types/src/controllers/dialogs_controller.d.ts +0 -36
- package/dist/types/src/controllers/effective_role.d.ts +0 -4
- package/dist/types/src/controllers/email.d.ts +0 -36
- package/dist/types/src/controllers/index.d.ts +0 -18
- package/dist/types/src/controllers/local_config_persistence.d.ts +0 -20
- package/dist/types/src/controllers/navigation.d.ts +0 -225
- package/dist/types/src/controllers/registry.d.ts +0 -63
- package/dist/types/src/controllers/side_dialogs_controller.d.ts +0 -67
- package/dist/types/src/controllers/side_entity_controller.d.ts +0 -97
- package/dist/types/src/controllers/snackbar.d.ts +0 -24
- package/dist/types/src/controllers/storage.d.ts +0 -171
- package/dist/types/src/index.d.ts +0 -4
- package/dist/types/src/rebase_context.d.ts +0 -122
- package/dist/types/src/types/auth_adapter.d.ts +0 -301
- package/dist/types/src/types/backend.d.ts +0 -571
- package/dist/types/src/types/backend_hooks.d.ts +0 -172
- package/dist/types/src/types/builders.d.ts +0 -15
- package/dist/types/src/types/chips.d.ts +0 -5
- package/dist/types/src/types/collections.d.ts +0 -961
- package/dist/types/src/types/component_ref.d.ts +0 -47
- package/dist/types/src/types/cron.d.ts +0 -102
- package/dist/types/src/types/data_source.d.ts +0 -64
- package/dist/types/src/types/database_adapter.d.ts +0 -94
- package/dist/types/src/types/entities.d.ts +0 -145
- package/dist/types/src/types/entity_actions.d.ts +0 -104
- package/dist/types/src/types/entity_callbacks.d.ts +0 -173
- package/dist/types/src/types/entity_link_builder.d.ts +0 -7
- package/dist/types/src/types/entity_overrides.d.ts +0 -10
- package/dist/types/src/types/entity_views.d.ts +0 -87
- package/dist/types/src/types/export_import.d.ts +0 -21
- package/dist/types/src/types/formex.d.ts +0 -40
- package/dist/types/src/types/index.d.ts +0 -28
- package/dist/types/src/types/locales.d.ts +0 -4
- package/dist/types/src/types/modify_collections.d.ts +0 -5
- package/dist/types/src/types/plugins.d.ts +0 -282
- package/dist/types/src/types/properties.d.ts +0 -1173
- package/dist/types/src/types/property_config.d.ts +0 -74
- package/dist/types/src/types/relations.d.ts +0 -336
- package/dist/types/src/types/slots.d.ts +0 -262
- package/dist/types/src/types/translations.d.ts +0 -900
- package/dist/types/src/types/user_management_delegate.d.ts +0 -86
- package/dist/types/src/types/websockets.d.ts +0 -78
- package/dist/types/src/users/index.d.ts +0 -1
- package/dist/types/src/users/user.d.ts +0 -50
- package/src/auth/admin-routes.ts +0 -534
- package/test/admin-routes.test.ts +0 -544
- package/test/backend-hooks-admin.test.ts +0 -388
- /package/dist/{server-core/src/api → api}/ast-schema-editor.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/collections_for_test/callbacks_test_collection.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/graphql/graphql-schema-generator.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/graphql/index.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/index.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/logs-routes.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/openapi-generator.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/rest/index.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/rest/query-parser.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/schema-editor-routes.d.ts +0 -0
- /package/dist/{server-core/src/api → api}/server.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/adapter-middleware.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/api-keys/api-key-middleware.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/api-keys/api-key-permission-guard.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/api-keys/api-key-routes.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/api-keys/api-key-store.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/api-keys/api-key-types.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/apple-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/bitbucket-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/crypto-utils.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/custom-auth-adapter.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/discord-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/facebook-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/github-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/gitlab-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/google-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/interfaces.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/jwt.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/linkedin-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/mfa.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/microsoft-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/middleware.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/password.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/rate-limiter.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/rls-scope.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/routes.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/slack-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/spotify-oauth.d.ts +0 -0
- /package/dist/{server-core/src/auth → auth}/twitter-oauth.d.ts +0 -0
- /package/dist/{server-core/src/collections → collections}/BackendCollectionRegistry.d.ts +0 -0
- /package/dist/{server-core/src/collections → collections}/loader.d.ts +0 -0
- /package/dist/{server-core/src/cron → cron}/cron-loader.d.ts +0 -0
- /package/dist/{server-core/src/cron → cron}/cron-routes.d.ts +0 -0
- /package/dist/{server-core/src/cron → cron}/cron-store.d.ts +0 -0
- /package/dist/{server-core/src/cron → cron}/index.d.ts +0 -0
- /package/dist/{server-core/src/db → db}/interfaces.d.ts +0 -0
- /package/dist/{server-core/src/email → email}/index.d.ts +0 -0
- /package/dist/{server-core/src/email → email}/smtp-email-service.d.ts +0 -0
- /package/dist/{server-core/src/email → email}/templates.d.ts +0 -0
- /package/dist/{server-core/src/email → email}/types.d.ts +0 -0
- /package/dist/{server-core/src/functions → functions}/function-loader.d.ts +0 -0
- /package/dist/{server-core/src/functions → functions}/function-routes.d.ts +0 -0
- /package/dist/{server-core/src/functions → functions}/index.d.ts +0 -0
- /package/dist/{server-core/src/history → history}/history-routes.d.ts +0 -0
- /package/dist/{server-core/src/history → history}/index.d.ts +0 -0
- /package/dist/{server-core/src/serve-spa.d.ts → serve-spa.d.ts} +0 -0
- /package/dist/{server-core/src/services → services}/driver-registry.d.ts +0 -0
- /package/dist/{server-core/src/services → services}/webhook-service.d.ts +0 -0
- /package/dist/{server-core/src/singleton.d.ts → singleton.d.ts} +0 -0
- /package/dist/{server-core/src/storage → storage}/LocalStorageController.d.ts +0 -0
- /package/dist/{server-core/src/storage → storage}/S3StorageController.d.ts +0 -0
- /package/dist/{server-core/src/storage → storage}/index.d.ts +0 -0
- /package/dist/{server-core/src/storage → storage}/routes.d.ts +0 -0
- /package/dist/{server-core/src/storage → storage}/storage-registry.d.ts +0 -0
- /package/dist/{server-core/src/storage → storage}/tus-handler.d.ts +0 -0
- /package/dist/{server-core/src/storage → storage}/types.d.ts +0 -0
- /package/dist/{server-core/src/types → types}/index.d.ts +0 -0
- /package/dist/{server-core/src/utils → utils}/dev-port.d.ts +0 -0
- /package/dist/{server-core/src/utils → utils}/logger.d.ts +0 -0
- /package/dist/{server-core/src/utils → utils}/logging.d.ts +0 -0
- /package/dist/{server-core/src/utils → utils}/request-logger.d.ts +0 -0
- /package/dist/{server-core/src/utils → utils}/sql.d.ts +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from "module";
|
|
2
|
+
import process from "process";
|
|
3
|
+
__createRequire(import.meta.url);
|
|
4
|
+
//#region src/utils/logger.ts
|
|
5
|
+
/** Google Cloud Logging severity strings. */
|
|
6
|
+
var GCP_SEVERITY = {
|
|
7
|
+
debug: "DEBUG",
|
|
8
|
+
info: "INFO",
|
|
9
|
+
warn: "WARNING",
|
|
10
|
+
error: "ERROR"
|
|
11
|
+
};
|
|
12
|
+
var LOG_PRIORITY = {
|
|
13
|
+
debug: 0,
|
|
14
|
+
info: 1,
|
|
15
|
+
warn: 2,
|
|
16
|
+
error: 3
|
|
17
|
+
};
|
|
18
|
+
function isProduction() {
|
|
19
|
+
return process.env.NODE_ENV === "production";
|
|
20
|
+
}
|
|
21
|
+
function getMinLevel() {
|
|
22
|
+
const env = (process.env.LOG_LEVEL || "info").toLowerCase();
|
|
23
|
+
if (env in LOG_PRIORITY) return env;
|
|
24
|
+
return "info";
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Serialise an Error into a plain object (stack + message).
|
|
28
|
+
* Handles non-Error values gracefully.
|
|
29
|
+
*/
|
|
30
|
+
function serialiseError(value) {
|
|
31
|
+
if (value instanceof Error) return {
|
|
32
|
+
name: value.name,
|
|
33
|
+
message: value.message,
|
|
34
|
+
stack: value.stack
|
|
35
|
+
};
|
|
36
|
+
return { value: String(value) };
|
|
37
|
+
}
|
|
38
|
+
function formatData(data) {
|
|
39
|
+
if (!data) return void 0;
|
|
40
|
+
const out = {};
|
|
41
|
+
for (const [key, val] of Object.entries(data)) if (val instanceof Error) out[key] = serialiseError(val);
|
|
42
|
+
else out[key] = val;
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
function createLogger(defaultFields = {}) {
|
|
46
|
+
const minLevel = getMinLevel();
|
|
47
|
+
function emit(level, message, data) {
|
|
48
|
+
if (LOG_PRIORITY[level] < LOG_PRIORITY[minLevel]) return;
|
|
49
|
+
const merged = {
|
|
50
|
+
...defaultFields,
|
|
51
|
+
...formatData(data)
|
|
52
|
+
};
|
|
53
|
+
if (isProduction()) {
|
|
54
|
+
const entry = {
|
|
55
|
+
severity: GCP_SEVERITY[level],
|
|
56
|
+
message,
|
|
57
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
58
|
+
...merged
|
|
59
|
+
};
|
|
60
|
+
const line = JSON.stringify(entry);
|
|
61
|
+
if (level === "error") process.stderr.write(line + "\n");
|
|
62
|
+
else process.stdout.write(line + "\n");
|
|
63
|
+
} else {
|
|
64
|
+
const prefix = level === "error" ? "❌" : level === "warn" ? "⚠️" : level === "info" ? "ℹ️" : "🐛";
|
|
65
|
+
const extra = Object.keys(merged).length > 0 ? ` ${JSON.stringify(merged)}` : "";
|
|
66
|
+
const out = `${prefix} [${level.toUpperCase()}] ${message}${extra}`;
|
|
67
|
+
if (level === "error") console.error(out);
|
|
68
|
+
else if (level === "warn") console.warn(out);
|
|
69
|
+
else console.log(out);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
debug: (msg, data) => emit("debug", msg, data),
|
|
74
|
+
info: (msg, data) => emit("info", msg, data),
|
|
75
|
+
warn: (msg, data) => emit("warn", msg, data),
|
|
76
|
+
error: (msg, data) => emit("error", msg, data),
|
|
77
|
+
child(fields) {
|
|
78
|
+
return createLogger({
|
|
79
|
+
...defaultFields,
|
|
80
|
+
...fields
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Singleton logger instance.
|
|
87
|
+
* In production: emits JSON lines with `severity`, `message`, `timestamp`.
|
|
88
|
+
* In development: emits human-readable prefixed lines.
|
|
89
|
+
*/
|
|
90
|
+
var logger = createLogger();
|
|
91
|
+
//#endregion
|
|
92
|
+
export { logger as t };
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=logger-BYU66ENZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-BYU66ENZ.js","names":[],"sources":["../src/utils/logger.ts"],"sourcesContent":["/**\n * Structured Logger for Rebase Backend\n *\n * Outputs JSON lines when `NODE_ENV=production`, human-readable prefixed\n * lines otherwise. Designed to work with Google Cloud Logging severity levels.\n *\n * Usage:\n * import { logger } from \"./utils/logger\";\n * logger.info(\"Server started\", { port: 3001 });\n * logger.error(\"Request failed\", { path: \"/api/test\", error: err });\n */\n\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\n/** Google Cloud Logging severity strings. */\nconst GCP_SEVERITY: Record<LogLevel, string> = {\n debug: \"DEBUG\",\n info: \"INFO\",\n warn: \"WARNING\",\n error: \"ERROR\"\n};\n\nconst LOG_PRIORITY: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3\n};\n\nexport interface LogEntry {\n severity: string;\n message: string;\n timestamp: string;\n [key: string]: unknown;\n}\n\nexport interface Logger {\n debug(message: string, data?: Record<string, unknown>): void;\n info(message: string, data?: Record<string, unknown>): void;\n warn(message: string, data?: Record<string, unknown>): void;\n error(message: string, data?: Record<string, unknown>): void;\n child(defaultFields: Record<string, unknown>): Logger;\n}\n\nfunction isProduction(): boolean {\n return process.env.NODE_ENV === \"production\";\n}\n\nfunction getMinLevel(): LogLevel {\n const env = (process.env.LOG_LEVEL || \"info\").toLowerCase();\n if (env in LOG_PRIORITY) return env as LogLevel;\n return \"info\";\n}\n\n/**\n * Serialise an Error into a plain object (stack + message).\n * Handles non-Error values gracefully.\n */\nfunction serialiseError(value: unknown): Record<string, unknown> {\n if (value instanceof Error) {\n return {\n name: value.name,\n message: value.message,\n stack: value.stack\n };\n }\n return { value: String(value) };\n}\n\nfunction formatData(data?: Record<string, unknown>): Record<string, unknown> | undefined {\n if (!data) return undefined;\n const out: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(data)) {\n if (val instanceof Error) {\n out[key] = serialiseError(val);\n } else {\n out[key] = val;\n }\n }\n return out;\n}\n\nfunction createLogger(defaultFields: Record<string, unknown> = {}): Logger {\n const minLevel = getMinLevel();\n\n function emit(level: LogLevel, message: string, data?: Record<string, unknown>): void {\n if (LOG_PRIORITY[level] < LOG_PRIORITY[minLevel]) return;\n\n const merged = { ...defaultFields,\n...formatData(data) };\n\n if (isProduction()) {\n // Structured JSON for Cloud Logging\n const entry: LogEntry = {\n severity: GCP_SEVERITY[level],\n message,\n timestamp: new Date().toISOString(),\n ...merged\n };\n const line = JSON.stringify(entry);\n\n if (level === \"error\") {\n process.stderr.write(line + \"\\n\");\n } else {\n process.stdout.write(line + \"\\n\");\n }\n } else {\n // Human-readable for development\n const prefix = level === \"error\" ? \"❌\"\n : level === \"warn\" ? \"⚠️\"\n : level === \"info\" ? \"ℹ️\"\n : \"🐛\";\n const extra = Object.keys(merged).length > 0 ? ` ${JSON.stringify(merged)}` : \"\";\n const out = `${prefix} [${level.toUpperCase()}] ${message}${extra}`;\n\n if (level === \"error\") {\n console.error(out);\n } else if (level === \"warn\") {\n console.warn(out);\n } else {\n console.log(out);\n }\n }\n }\n\n return {\n debug: (msg, data) => emit(\"debug\", msg, data),\n info: (msg, data) => emit(\"info\", msg, data),\n warn: (msg, data) => emit(\"warn\", msg, data),\n error: (msg, data) => emit(\"error\", msg, data),\n child(fields: Record<string, unknown>): Logger {\n return createLogger({ ...defaultFields,\n...fields });\n }\n };\n}\n\n/**\n * Singleton logger instance.\n * In production: emits JSON lines with `severity`, `message`, `timestamp`.\n * In development: emits human-readable prefixed lines.\n */\nexport const logger: Logger = createLogger();\n"],"mappings":";;;;;AAeA,IAAM,eAAyC;CAC3C,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;AACX;AAEA,IAAM,eAAyC;CAC3C,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;AACX;AAiBA,SAAS,eAAwB;CAC7B,OAAA,QAAA,IAAA,aAAgC;AACpC;AAEA,SAAS,cAAwB;CAC7B,MAAM,OAAO,QAAQ,IAAI,aAAa,QAAQ,YAAY;CAC1D,IAAI,OAAO,cAAc,OAAO;CAChC,OAAO;AACX;;;;;AAMA,SAAS,eAAe,OAAyC;CAC7D,IAAI,iBAAiB,OACjB,OAAO;EACH,MAAM,MAAM;EACZ,SAAS,MAAM;EACf,OAAO,MAAM;CACjB;CAEJ,OAAO,EAAE,OAAO,OAAO,KAAK,EAAE;AAClC;AAEA,SAAS,WAAW,MAAqE;CACrF,IAAI,CAAC,MAAM,OAAO,KAAA;CAClB,MAAM,MAA+B,CAAC;CACtC,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,IAAI,GACxC,IAAI,eAAe,OACf,IAAI,OAAO,eAAe,GAAG;MAE7B,IAAI,OAAO;CAGnB,OAAO;AACX;AAEA,SAAS,aAAa,gBAAyC,CAAC,GAAW;CACvE,MAAM,WAAW,YAAY;CAE7B,SAAS,KAAK,OAAiB,SAAiB,MAAsC;EAClF,IAAI,aAAa,SAAS,aAAa,WAAW;EAElD,MAAM,SAAS;GAAE,GAAG;GAC5B,GAAG,WAAW,IAAI;EAAE;EAEZ,IAAI,aAAa,GAAG;GAEhB,MAAM,QAAkB;IACpB,UAAU,aAAa;IACvB;IACA,4BAAW,IAAI,KAAK,GAAE,YAAY;IAClC,GAAG;GACP;GACA,MAAM,OAAO,KAAK,UAAU,KAAK;GAEjC,IAAI,UAAU,SACV,QAAQ,OAAO,MAAM,OAAO,IAAI;QAEhC,QAAQ,OAAO,MAAM,OAAO,IAAI;EAExC,OAAO;GAEH,MAAM,SAAS,UAAU,UAAU,MAC7B,UAAU,SAAS,OACnB,UAAU,SAAS,OACnB;GACN,MAAM,QAAQ,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,IAAI,KAAK,UAAU,MAAM,MAAM;GAC9E,MAAM,MAAM,GAAG,OAAO,IAAI,MAAM,YAAY,EAAE,IAAI,UAAU;GAE5D,IAAI,UAAU,SACV,QAAQ,MAAM,GAAG;QACd,IAAI,UAAU,QACjB,QAAQ,KAAK,GAAG;QAEhB,QAAQ,IAAI,GAAG;EAEvB;CACJ;CAEA,OAAO;EACH,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,IAAI;EAC7C,OAAO,KAAK,SAAS,KAAK,QAAQ,KAAK,IAAI;EAC3C,OAAO,KAAK,SAAS,KAAK,QAAQ,KAAK,IAAI;EAC3C,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,IAAI;EAC7C,MAAM,QAAyC;GAC3C,OAAO,aAAa;IAAE,GAAG;IACrC,GAAG;GAAO,CAAC;EACH;CACJ;AACJ;;;;;;AAOA,IAAa,SAAiB,aAAa"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from "module";
|
|
2
|
+
import "process";
|
|
3
|
+
__createRequire(import.meta.url);
|
|
4
|
+
import { t as __commonJSMin } from "./chunk-Dze3rakg.js";
|
|
5
|
+
//#region ../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js
|
|
6
|
+
var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
7
|
+
/**
|
|
8
|
+
* Helpers.
|
|
9
|
+
*/
|
|
10
|
+
var s = 1e3;
|
|
11
|
+
var m = s * 60;
|
|
12
|
+
var h = m * 60;
|
|
13
|
+
var d = h * 24;
|
|
14
|
+
var w = d * 7;
|
|
15
|
+
var y = d * 365.25;
|
|
16
|
+
/**
|
|
17
|
+
* Parse or format the given `val`.
|
|
18
|
+
*
|
|
19
|
+
* Options:
|
|
20
|
+
*
|
|
21
|
+
* - `long` verbose formatting [false]
|
|
22
|
+
*
|
|
23
|
+
* @param {String|Number} val
|
|
24
|
+
* @param {Object} [options]
|
|
25
|
+
* @throws {Error} throw an error if val is not a non-empty string or a number
|
|
26
|
+
* @return {String|Number}
|
|
27
|
+
* @api public
|
|
28
|
+
*/
|
|
29
|
+
module.exports = function(val, options) {
|
|
30
|
+
options = options || {};
|
|
31
|
+
var type = typeof val;
|
|
32
|
+
if (type === "string" && val.length > 0) return parse(val);
|
|
33
|
+
else if (type === "number" && isFinite(val)) return options.long ? fmtLong(val) : fmtShort(val);
|
|
34
|
+
throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val));
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Parse the given `str` and return milliseconds.
|
|
38
|
+
*
|
|
39
|
+
* @param {String} str
|
|
40
|
+
* @return {Number}
|
|
41
|
+
* @api private
|
|
42
|
+
*/
|
|
43
|
+
function parse(str) {
|
|
44
|
+
str = String(str);
|
|
45
|
+
if (str.length > 100) return;
|
|
46
|
+
var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
|
|
47
|
+
if (!match) return;
|
|
48
|
+
var n = parseFloat(match[1]);
|
|
49
|
+
switch ((match[2] || "ms").toLowerCase()) {
|
|
50
|
+
case "years":
|
|
51
|
+
case "year":
|
|
52
|
+
case "yrs":
|
|
53
|
+
case "yr":
|
|
54
|
+
case "y": return n * y;
|
|
55
|
+
case "weeks":
|
|
56
|
+
case "week":
|
|
57
|
+
case "w": return n * w;
|
|
58
|
+
case "days":
|
|
59
|
+
case "day":
|
|
60
|
+
case "d": return n * d;
|
|
61
|
+
case "hours":
|
|
62
|
+
case "hour":
|
|
63
|
+
case "hrs":
|
|
64
|
+
case "hr":
|
|
65
|
+
case "h": return n * h;
|
|
66
|
+
case "minutes":
|
|
67
|
+
case "minute":
|
|
68
|
+
case "mins":
|
|
69
|
+
case "min":
|
|
70
|
+
case "m": return n * m;
|
|
71
|
+
case "seconds":
|
|
72
|
+
case "second":
|
|
73
|
+
case "secs":
|
|
74
|
+
case "sec":
|
|
75
|
+
case "s": return n * s;
|
|
76
|
+
case "milliseconds":
|
|
77
|
+
case "millisecond":
|
|
78
|
+
case "msecs":
|
|
79
|
+
case "msec":
|
|
80
|
+
case "ms": return n;
|
|
81
|
+
default: return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Short format for `ms`.
|
|
86
|
+
*
|
|
87
|
+
* @param {Number} ms
|
|
88
|
+
* @return {String}
|
|
89
|
+
* @api private
|
|
90
|
+
*/
|
|
91
|
+
function fmtShort(ms) {
|
|
92
|
+
var msAbs = Math.abs(ms);
|
|
93
|
+
if (msAbs >= d) return Math.round(ms / d) + "d";
|
|
94
|
+
if (msAbs >= h) return Math.round(ms / h) + "h";
|
|
95
|
+
if (msAbs >= m) return Math.round(ms / m) + "m";
|
|
96
|
+
if (msAbs >= s) return Math.round(ms / s) + "s";
|
|
97
|
+
return ms + "ms";
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Long format for `ms`.
|
|
101
|
+
*
|
|
102
|
+
* @param {Number} ms
|
|
103
|
+
* @return {String}
|
|
104
|
+
* @api private
|
|
105
|
+
*/
|
|
106
|
+
function fmtLong(ms) {
|
|
107
|
+
var msAbs = Math.abs(ms);
|
|
108
|
+
if (msAbs >= d) return plural(ms, msAbs, d, "day");
|
|
109
|
+
if (msAbs >= h) return plural(ms, msAbs, h, "hour");
|
|
110
|
+
if (msAbs >= m) return plural(ms, msAbs, m, "minute");
|
|
111
|
+
if (msAbs >= s) return plural(ms, msAbs, s, "second");
|
|
112
|
+
return ms + " ms";
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Pluralization helper.
|
|
116
|
+
*/
|
|
117
|
+
function plural(ms, msAbs, n, name) {
|
|
118
|
+
var isPlural = msAbs >= n * 1.5;
|
|
119
|
+
return Math.round(ms / n) + " " + name + (isPlural ? "s" : "");
|
|
120
|
+
}
|
|
121
|
+
}));
|
|
122
|
+
//#endregion
|
|
123
|
+
export { require_ms as t };
|
|
124
|
+
|
|
125
|
+
//# sourceMappingURL=ms-BeBSuOXN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ms-BeBSuOXN.js","names":[],"sources":["../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;CAIA,IAAI,IAAI;CACR,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;CACZ,IAAI,IAAI,IAAI;;;;;;;;;;;;;;CAgBZ,OAAO,UAAU,SAAU,KAAK,SAAS;EACvC,UAAU,WAAW,CAAC;EACtB,IAAI,OAAO,OAAO;EAClB,IAAI,SAAS,YAAY,IAAI,SAAS,GACpC,OAAO,MAAM,GAAG;OACX,IAAI,SAAS,YAAY,SAAS,GAAG,GAC1C,OAAO,QAAQ,OAAO,QAAQ,GAAG,IAAI,SAAS,GAAG;EAEnD,MAAM,IAAI,MACR,0DACE,KAAK,UAAU,GAAG,CACtB;CACF;;;;;;;;CAUA,SAAS,MAAM,KAAK;EAClB,MAAM,OAAO,GAAG;EAChB,IAAI,IAAI,SAAS,KACf;EAEF,IAAI,QAAQ,mIAAmI,KAC7I,GACF;EACA,IAAI,CAAC,OACH;EAEF,IAAI,IAAI,WAAW,MAAM,EAAE;EAE3B,SADY,MAAM,MAAM,MAAM,YACnB,GAAX;GACE,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,KACH,OAAO,IAAI;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,MACH,OAAO;GACT,SACE;EACJ;CACF;;;;;;;;CAUA,SAAS,SAAS,IAAI;EACpB,IAAI,QAAQ,KAAK,IAAI,EAAE;EACvB,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,IAAI,SAAS,GACX,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI;EAE9B,OAAO,KAAK;CACd;;;;;;;;CAUA,SAAS,QAAQ,IAAI;EACnB,IAAI,QAAQ,KAAK,IAAI,EAAE;EACvB,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,KAAK;EAEnC,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,MAAM;EAEpC,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;EAEtC,IAAI,SAAS,GACX,OAAO,OAAO,IAAI,OAAO,GAAG,QAAQ;EAEtC,OAAO,KAAK;CACd;;;;CAMA,SAAS,OAAO,IAAI,OAAO,GAAG,MAAM;EAClC,IAAI,WAAW,SAAS,IAAI;EAC5B,OAAO,KAAK,MAAM,KAAK,CAAC,IAAI,MAAM,QAAQ,WAAW,MAAM;CAC7D"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from "module";
|
|
2
|
+
import "process";
|
|
3
|
+
__createRequire(import.meta.url);
|
|
4
|
+
import { n as __esmMin } from "./chunk-Dze3rakg.js";
|
|
5
|
+
import { a as File, i as init_esm_min, n as FormData, t as init_from } from "./from-VbwD7xRf.js";
|
|
6
|
+
//#region ../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/multipart-parser.js
|
|
7
|
+
function _fileName(headerValue) {
|
|
8
|
+
const m = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
|
|
9
|
+
if (!m) return;
|
|
10
|
+
const match = m[2] || m[3] || "";
|
|
11
|
+
let filename = match.slice(match.lastIndexOf("\\") + 1);
|
|
12
|
+
filename = filename.replace(/%22/g, "\"");
|
|
13
|
+
filename = filename.replace(/&#(\d{4});/g, (m, code) => {
|
|
14
|
+
return String.fromCharCode(code);
|
|
15
|
+
});
|
|
16
|
+
return filename;
|
|
17
|
+
}
|
|
18
|
+
async function toFormData(Body, ct) {
|
|
19
|
+
if (!/multipart/i.test(ct)) throw new TypeError("Failed to fetch");
|
|
20
|
+
const m = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
|
|
21
|
+
if (!m) throw new TypeError("no or bad content-type header, no multipart boundary");
|
|
22
|
+
const parser = new MultipartParser(m[1] || m[2]);
|
|
23
|
+
let headerField;
|
|
24
|
+
let headerValue;
|
|
25
|
+
let entryValue;
|
|
26
|
+
let entryName;
|
|
27
|
+
let contentType;
|
|
28
|
+
let filename;
|
|
29
|
+
const entryChunks = [];
|
|
30
|
+
const formData = new FormData();
|
|
31
|
+
const onPartData = (ui8a) => {
|
|
32
|
+
entryValue += decoder.decode(ui8a, { stream: true });
|
|
33
|
+
};
|
|
34
|
+
const appendToFile = (ui8a) => {
|
|
35
|
+
entryChunks.push(ui8a);
|
|
36
|
+
};
|
|
37
|
+
const appendFileToFormData = () => {
|
|
38
|
+
const file = new File(entryChunks, filename, { type: contentType });
|
|
39
|
+
formData.append(entryName, file);
|
|
40
|
+
};
|
|
41
|
+
const appendEntryToFormData = () => {
|
|
42
|
+
formData.append(entryName, entryValue);
|
|
43
|
+
};
|
|
44
|
+
const decoder = new TextDecoder("utf-8");
|
|
45
|
+
decoder.decode();
|
|
46
|
+
parser.onPartBegin = function() {
|
|
47
|
+
parser.onPartData = onPartData;
|
|
48
|
+
parser.onPartEnd = appendEntryToFormData;
|
|
49
|
+
headerField = "";
|
|
50
|
+
headerValue = "";
|
|
51
|
+
entryValue = "";
|
|
52
|
+
entryName = "";
|
|
53
|
+
contentType = "";
|
|
54
|
+
filename = null;
|
|
55
|
+
entryChunks.length = 0;
|
|
56
|
+
};
|
|
57
|
+
parser.onHeaderField = function(ui8a) {
|
|
58
|
+
headerField += decoder.decode(ui8a, { stream: true });
|
|
59
|
+
};
|
|
60
|
+
parser.onHeaderValue = function(ui8a) {
|
|
61
|
+
headerValue += decoder.decode(ui8a, { stream: true });
|
|
62
|
+
};
|
|
63
|
+
parser.onHeaderEnd = function() {
|
|
64
|
+
headerValue += decoder.decode();
|
|
65
|
+
headerField = headerField.toLowerCase();
|
|
66
|
+
if (headerField === "content-disposition") {
|
|
67
|
+
const m = headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);
|
|
68
|
+
if (m) entryName = m[2] || m[3] || "";
|
|
69
|
+
filename = _fileName(headerValue);
|
|
70
|
+
if (filename) {
|
|
71
|
+
parser.onPartData = appendToFile;
|
|
72
|
+
parser.onPartEnd = appendFileToFormData;
|
|
73
|
+
}
|
|
74
|
+
} else if (headerField === "content-type") contentType = headerValue;
|
|
75
|
+
headerValue = "";
|
|
76
|
+
headerField = "";
|
|
77
|
+
};
|
|
78
|
+
for await (const chunk of Body) parser.write(chunk);
|
|
79
|
+
parser.end();
|
|
80
|
+
return formData;
|
|
81
|
+
}
|
|
82
|
+
var s, S, f, F, LF, CR, SPACE, HYPHEN, COLON, A, Z, lower, noop, MultipartParser;
|
|
83
|
+
//#endregion
|
|
84
|
+
__esmMin((() => {
|
|
85
|
+
init_from();
|
|
86
|
+
init_esm_min();
|
|
87
|
+
s = 0;
|
|
88
|
+
S = {
|
|
89
|
+
START_BOUNDARY: s++,
|
|
90
|
+
HEADER_FIELD_START: s++,
|
|
91
|
+
HEADER_FIELD: s++,
|
|
92
|
+
HEADER_VALUE_START: s++,
|
|
93
|
+
HEADER_VALUE: s++,
|
|
94
|
+
HEADER_VALUE_ALMOST_DONE: s++,
|
|
95
|
+
HEADERS_ALMOST_DONE: s++,
|
|
96
|
+
PART_DATA_START: s++,
|
|
97
|
+
PART_DATA: s++,
|
|
98
|
+
END: s++
|
|
99
|
+
};
|
|
100
|
+
f = 1;
|
|
101
|
+
F = {
|
|
102
|
+
PART_BOUNDARY: f,
|
|
103
|
+
LAST_BOUNDARY: f *= 2
|
|
104
|
+
};
|
|
105
|
+
LF = 10;
|
|
106
|
+
CR = 13;
|
|
107
|
+
SPACE = 32;
|
|
108
|
+
HYPHEN = 45;
|
|
109
|
+
COLON = 58;
|
|
110
|
+
A = 97;
|
|
111
|
+
Z = 122;
|
|
112
|
+
lower = (c) => c | 32;
|
|
113
|
+
noop = () => {};
|
|
114
|
+
MultipartParser = class {
|
|
115
|
+
/**
|
|
116
|
+
* @param {string} boundary
|
|
117
|
+
*/
|
|
118
|
+
constructor(boundary) {
|
|
119
|
+
this.index = 0;
|
|
120
|
+
this.flags = 0;
|
|
121
|
+
this.onHeaderEnd = noop;
|
|
122
|
+
this.onHeaderField = noop;
|
|
123
|
+
this.onHeadersEnd = noop;
|
|
124
|
+
this.onHeaderValue = noop;
|
|
125
|
+
this.onPartBegin = noop;
|
|
126
|
+
this.onPartData = noop;
|
|
127
|
+
this.onPartEnd = noop;
|
|
128
|
+
this.boundaryChars = {};
|
|
129
|
+
boundary = "\r\n--" + boundary;
|
|
130
|
+
const ui8a = new Uint8Array(boundary.length);
|
|
131
|
+
for (let i = 0; i < boundary.length; i++) {
|
|
132
|
+
ui8a[i] = boundary.charCodeAt(i);
|
|
133
|
+
this.boundaryChars[ui8a[i]] = true;
|
|
134
|
+
}
|
|
135
|
+
this.boundary = ui8a;
|
|
136
|
+
this.lookbehind = new Uint8Array(this.boundary.length + 8);
|
|
137
|
+
this.state = S.START_BOUNDARY;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @param {Uint8Array} data
|
|
141
|
+
*/
|
|
142
|
+
write(data) {
|
|
143
|
+
let i = 0;
|
|
144
|
+
const length_ = data.length;
|
|
145
|
+
let previousIndex = this.index;
|
|
146
|
+
let { lookbehind, boundary, boundaryChars, index, state, flags } = this;
|
|
147
|
+
const boundaryLength = this.boundary.length;
|
|
148
|
+
const boundaryEnd = boundaryLength - 1;
|
|
149
|
+
const bufferLength = data.length;
|
|
150
|
+
let c;
|
|
151
|
+
let cl;
|
|
152
|
+
const mark = (name) => {
|
|
153
|
+
this[name + "Mark"] = i;
|
|
154
|
+
};
|
|
155
|
+
const clear = (name) => {
|
|
156
|
+
delete this[name + "Mark"];
|
|
157
|
+
};
|
|
158
|
+
const callback = (callbackSymbol, start, end, ui8a) => {
|
|
159
|
+
if (start === void 0 || start !== end) this[callbackSymbol](ui8a && ui8a.subarray(start, end));
|
|
160
|
+
};
|
|
161
|
+
const dataCallback = (name, clear) => {
|
|
162
|
+
const markSymbol = name + "Mark";
|
|
163
|
+
if (!(markSymbol in this)) return;
|
|
164
|
+
if (clear) {
|
|
165
|
+
callback(name, this[markSymbol], i, data);
|
|
166
|
+
delete this[markSymbol];
|
|
167
|
+
} else {
|
|
168
|
+
callback(name, this[markSymbol], data.length, data);
|
|
169
|
+
this[markSymbol] = 0;
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
for (i = 0; i < length_; i++) {
|
|
173
|
+
c = data[i];
|
|
174
|
+
switch (state) {
|
|
175
|
+
case S.START_BOUNDARY:
|
|
176
|
+
if (index === boundary.length - 2) {
|
|
177
|
+
if (c === HYPHEN) flags |= F.LAST_BOUNDARY;
|
|
178
|
+
else if (c !== CR) return;
|
|
179
|
+
index++;
|
|
180
|
+
break;
|
|
181
|
+
} else if (index - 1 === boundary.length - 2) {
|
|
182
|
+
if (flags & F.LAST_BOUNDARY && c === HYPHEN) {
|
|
183
|
+
state = S.END;
|
|
184
|
+
flags = 0;
|
|
185
|
+
} else if (!(flags & F.LAST_BOUNDARY) && c === LF) {
|
|
186
|
+
index = 0;
|
|
187
|
+
callback("onPartBegin");
|
|
188
|
+
state = S.HEADER_FIELD_START;
|
|
189
|
+
} else return;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
if (c !== boundary[index + 2]) index = -2;
|
|
193
|
+
if (c === boundary[index + 2]) index++;
|
|
194
|
+
break;
|
|
195
|
+
case S.HEADER_FIELD_START:
|
|
196
|
+
state = S.HEADER_FIELD;
|
|
197
|
+
mark("onHeaderField");
|
|
198
|
+
index = 0;
|
|
199
|
+
case S.HEADER_FIELD:
|
|
200
|
+
if (c === CR) {
|
|
201
|
+
clear("onHeaderField");
|
|
202
|
+
state = S.HEADERS_ALMOST_DONE;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
index++;
|
|
206
|
+
if (c === HYPHEN) break;
|
|
207
|
+
if (c === COLON) {
|
|
208
|
+
if (index === 1) return;
|
|
209
|
+
dataCallback("onHeaderField", true);
|
|
210
|
+
state = S.HEADER_VALUE_START;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
cl = lower(c);
|
|
214
|
+
if (cl < A || cl > Z) return;
|
|
215
|
+
break;
|
|
216
|
+
case S.HEADER_VALUE_START:
|
|
217
|
+
if (c === SPACE) break;
|
|
218
|
+
mark("onHeaderValue");
|
|
219
|
+
state = S.HEADER_VALUE;
|
|
220
|
+
case S.HEADER_VALUE:
|
|
221
|
+
if (c === CR) {
|
|
222
|
+
dataCallback("onHeaderValue", true);
|
|
223
|
+
callback("onHeaderEnd");
|
|
224
|
+
state = S.HEADER_VALUE_ALMOST_DONE;
|
|
225
|
+
}
|
|
226
|
+
break;
|
|
227
|
+
case S.HEADER_VALUE_ALMOST_DONE:
|
|
228
|
+
if (c !== LF) return;
|
|
229
|
+
state = S.HEADER_FIELD_START;
|
|
230
|
+
break;
|
|
231
|
+
case S.HEADERS_ALMOST_DONE:
|
|
232
|
+
if (c !== LF) return;
|
|
233
|
+
callback("onHeadersEnd");
|
|
234
|
+
state = S.PART_DATA_START;
|
|
235
|
+
break;
|
|
236
|
+
case S.PART_DATA_START:
|
|
237
|
+
state = S.PART_DATA;
|
|
238
|
+
mark("onPartData");
|
|
239
|
+
case S.PART_DATA:
|
|
240
|
+
previousIndex = index;
|
|
241
|
+
if (index === 0) {
|
|
242
|
+
i += boundaryEnd;
|
|
243
|
+
while (i < bufferLength && !(data[i] in boundaryChars)) i += boundaryLength;
|
|
244
|
+
i -= boundaryEnd;
|
|
245
|
+
c = data[i];
|
|
246
|
+
}
|
|
247
|
+
if (index < boundary.length) if (boundary[index] === c) {
|
|
248
|
+
if (index === 0) dataCallback("onPartData", true);
|
|
249
|
+
index++;
|
|
250
|
+
} else index = 0;
|
|
251
|
+
else if (index === boundary.length) {
|
|
252
|
+
index++;
|
|
253
|
+
if (c === CR) flags |= F.PART_BOUNDARY;
|
|
254
|
+
else if (c === HYPHEN) flags |= F.LAST_BOUNDARY;
|
|
255
|
+
else index = 0;
|
|
256
|
+
} else if (index - 1 === boundary.length) if (flags & F.PART_BOUNDARY) {
|
|
257
|
+
index = 0;
|
|
258
|
+
if (c === LF) {
|
|
259
|
+
flags &= ~F.PART_BOUNDARY;
|
|
260
|
+
callback("onPartEnd");
|
|
261
|
+
callback("onPartBegin");
|
|
262
|
+
state = S.HEADER_FIELD_START;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
} else if (flags & F.LAST_BOUNDARY) if (c === HYPHEN) {
|
|
266
|
+
callback("onPartEnd");
|
|
267
|
+
state = S.END;
|
|
268
|
+
flags = 0;
|
|
269
|
+
} else index = 0;
|
|
270
|
+
else index = 0;
|
|
271
|
+
if (index > 0) lookbehind[index - 1] = c;
|
|
272
|
+
else if (previousIndex > 0) {
|
|
273
|
+
const _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);
|
|
274
|
+
callback("onPartData", 0, previousIndex, _lookbehind);
|
|
275
|
+
previousIndex = 0;
|
|
276
|
+
mark("onPartData");
|
|
277
|
+
i--;
|
|
278
|
+
}
|
|
279
|
+
break;
|
|
280
|
+
case S.END: break;
|
|
281
|
+
default: throw new Error(`Unexpected state entered: ${state}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
dataCallback("onHeaderField");
|
|
285
|
+
dataCallback("onHeaderValue");
|
|
286
|
+
dataCallback("onPartData");
|
|
287
|
+
this.index = index;
|
|
288
|
+
this.state = state;
|
|
289
|
+
this.flags = flags;
|
|
290
|
+
}
|
|
291
|
+
end() {
|
|
292
|
+
if (this.state === S.HEADER_FIELD_START && this.index === 0 || this.state === S.PART_DATA && this.index === this.boundary.length) this.onPartEnd();
|
|
293
|
+
else if (this.state !== S.END) throw new Error("MultipartParser.end(): stream ended unexpectedly");
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
}))();
|
|
297
|
+
export { toFormData };
|
|
298
|
+
|
|
299
|
+
//# sourceMappingURL=multipart-parser-CedBDOeC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipart-parser-CedBDOeC.js","names":[],"sources":["../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/multipart-parser.js"],"sourcesContent":["import {File} from 'fetch-blob/from.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\n\nlet s = 0;\nconst S = {\n\tSTART_BOUNDARY: s++,\n\tHEADER_FIELD_START: s++,\n\tHEADER_FIELD: s++,\n\tHEADER_VALUE_START: s++,\n\tHEADER_VALUE: s++,\n\tHEADER_VALUE_ALMOST_DONE: s++,\n\tHEADERS_ALMOST_DONE: s++,\n\tPART_DATA_START: s++,\n\tPART_DATA: s++,\n\tEND: s++\n};\n\nlet f = 1;\nconst F = {\n\tPART_BOUNDARY: f,\n\tLAST_BOUNDARY: f *= 2\n};\n\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst HYPHEN = 45;\nconst COLON = 58;\nconst A = 97;\nconst Z = 122;\n\nconst lower = c => c | 0x20;\n\nconst noop = () => {};\n\nclass MultipartParser {\n\t/**\n\t * @param {string} boundary\n\t */\n\tconstructor(boundary) {\n\t\tthis.index = 0;\n\t\tthis.flags = 0;\n\n\t\tthis.onHeaderEnd = noop;\n\t\tthis.onHeaderField = noop;\n\t\tthis.onHeadersEnd = noop;\n\t\tthis.onHeaderValue = noop;\n\t\tthis.onPartBegin = noop;\n\t\tthis.onPartData = noop;\n\t\tthis.onPartEnd = noop;\n\n\t\tthis.boundaryChars = {};\n\n\t\tboundary = '\\r\\n--' + boundary;\n\t\tconst ui8a = new Uint8Array(boundary.length);\n\t\tfor (let i = 0; i < boundary.length; i++) {\n\t\t\tui8a[i] = boundary.charCodeAt(i);\n\t\t\tthis.boundaryChars[ui8a[i]] = true;\n\t\t}\n\n\t\tthis.boundary = ui8a;\n\t\tthis.lookbehind = new Uint8Array(this.boundary.length + 8);\n\t\tthis.state = S.START_BOUNDARY;\n\t}\n\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\twrite(data) {\n\t\tlet i = 0;\n\t\tconst length_ = data.length;\n\t\tlet previousIndex = this.index;\n\t\tlet {lookbehind, boundary, boundaryChars, index, state, flags} = this;\n\t\tconst boundaryLength = this.boundary.length;\n\t\tconst boundaryEnd = boundaryLength - 1;\n\t\tconst bufferLength = data.length;\n\t\tlet c;\n\t\tlet cl;\n\n\t\tconst mark = name => {\n\t\t\tthis[name + 'Mark'] = i;\n\t\t};\n\n\t\tconst clear = name => {\n\t\t\tdelete this[name + 'Mark'];\n\t\t};\n\n\t\tconst callback = (callbackSymbol, start, end, ui8a) => {\n\t\t\tif (start === undefined || start !== end) {\n\t\t\t\tthis[callbackSymbol](ui8a && ui8a.subarray(start, end));\n\t\t\t}\n\t\t};\n\n\t\tconst dataCallback = (name, clear) => {\n\t\t\tconst markSymbol = name + 'Mark';\n\t\t\tif (!(markSymbol in this)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (clear) {\n\t\t\t\tcallback(name, this[markSymbol], i, data);\n\t\t\t\tdelete this[markSymbol];\n\t\t\t} else {\n\t\t\t\tcallback(name, this[markSymbol], data.length, data);\n\t\t\t\tthis[markSymbol] = 0;\n\t\t\t}\n\t\t};\n\n\t\tfor (i = 0; i < length_; i++) {\n\t\t\tc = data[i];\n\n\t\t\tswitch (state) {\n\t\t\t\tcase S.START_BOUNDARY:\n\t\t\t\t\tif (index === boundary.length - 2) {\n\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else if (c !== CR) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (index - 1 === boundary.length - 2) {\n\t\t\t\t\t\tif (flags & F.LAST_BOUNDARY && c === HYPHEN) {\n\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t} else if (!(flags & F.LAST_BOUNDARY) && c === LF) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c !== boundary[index + 2]) {\n\t\t\t\t\t\tindex = -2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === boundary[index + 2]) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_FIELD_START:\n\t\t\t\t\tstate = S.HEADER_FIELD;\n\t\t\t\t\tmark('onHeaderField');\n\t\t\t\t\tindex = 0;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_FIELD:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tclear('onHeaderField');\n\t\t\t\t\t\tstate = S.HEADERS_ALMOST_DONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tindex++;\n\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === COLON) {\n\t\t\t\t\t\tif (index === 1) {\n\t\t\t\t\t\t\t// empty header field\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataCallback('onHeaderField', true);\n\t\t\t\t\t\tstate = S.HEADER_VALUE_START;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcl = lower(c);\n\t\t\t\t\tif (cl < A || cl > Z) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_START:\n\t\t\t\t\tif (c === SPACE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tmark('onHeaderValue');\n\t\t\t\t\tstate = S.HEADER_VALUE;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_VALUE:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tdataCallback('onHeaderValue', true);\n\t\t\t\t\t\tcallback('onHeaderEnd');\n\t\t\t\t\t\tstate = S.HEADER_VALUE_ALMOST_DONE;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADERS_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback('onHeadersEnd');\n\t\t\t\t\tstate = S.PART_DATA_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.PART_DATA_START:\n\t\t\t\t\tstate = S.PART_DATA;\n\t\t\t\t\tmark('onPartData');\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.PART_DATA:\n\t\t\t\t\tpreviousIndex = index;\n\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t// boyer-moore derrived algorithm to safely skip non-boundary data\n\t\t\t\t\t\ti += boundaryEnd;\n\t\t\t\t\t\twhile (i < bufferLength && !(data[i] in boundaryChars)) {\n\t\t\t\t\t\t\ti += boundaryLength;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti -= boundaryEnd;\n\t\t\t\t\t\tc = data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < boundary.length) {\n\t\t\t\t\t\tif (boundary[index] === c) {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tdataCallback('onPartData', true);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index === boundary.length) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\t\t// CR = part boundary\n\t\t\t\t\t\t\tflags |= F.PART_BOUNDARY;\n\t\t\t\t\t\t} else if (c === HYPHEN) {\n\t\t\t\t\t\t\t// HYPHEN = end boundary\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index - 1 === boundary.length) {\n\t\t\t\t\t\tif (flags & F.PART_BOUNDARY) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tif (c === LF) {\n\t\t\t\t\t\t\t\t// unset the PART_BOUNDARY flag\n\t\t\t\t\t\t\t\tflags &= ~F.PART_BOUNDARY;\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (flags & F.LAST_BOUNDARY) {\n\t\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t// when matching a possible boundary, keep a lookbehind reference\n\t\t\t\t\t\t// in case it turns out to be a false lead\n\t\t\t\t\t\tlookbehind[index - 1] = c;\n\t\t\t\t\t} else if (previousIndex > 0) {\n\t\t\t\t\t\t// if our boundary turned out to be rubbish, the captured lookbehind\n\t\t\t\t\t\t// belongs to partData\n\t\t\t\t\t\tconst _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);\n\t\t\t\t\t\tcallback('onPartData', 0, previousIndex, _lookbehind);\n\t\t\t\t\t\tpreviousIndex = 0;\n\t\t\t\t\t\tmark('onPartData');\n\n\t\t\t\t\t\t// reconsider the current character even so it interrupted the sequence\n\t\t\t\t\t\t// it could be the beginning of a new sequence\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.END:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected state entered: ${state}`);\n\t\t\t}\n\t\t}\n\n\t\tdataCallback('onHeaderField');\n\t\tdataCallback('onHeaderValue');\n\t\tdataCallback('onPartData');\n\n\t\t// Update properties for the next call\n\t\tthis.index = index;\n\t\tthis.state = state;\n\t\tthis.flags = flags;\n\t}\n\n\tend() {\n\t\tif ((this.state === S.HEADER_FIELD_START && this.index === 0) ||\n\t\t\t(this.state === S.PART_DATA && this.index === this.boundary.length)) {\n\t\t\tthis.onPartEnd();\n\t\t} else if (this.state !== S.END) {\n\t\t\tthrow new Error('MultipartParser.end(): stream ended unexpectedly');\n\t\t}\n\t}\n}\n\nfunction _fileName(headerValue) {\n\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\tconst m = headerValue.match(/\\bfilename=(\"(.*?)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))($|;\\s)/i);\n\tif (!m) {\n\t\treturn;\n\t}\n\n\tconst match = m[2] || m[3] || '';\n\tlet filename = match.slice(match.lastIndexOf('\\\\') + 1);\n\tfilename = filename.replace(/%22/g, '\"');\n\tfilename = filename.replace(/&#(\\d{4});/g, (m, code) => {\n\t\treturn String.fromCharCode(code);\n\t});\n\treturn filename;\n}\n\nexport async function toFormData(Body, ct) {\n\tif (!/multipart/i.test(ct)) {\n\t\tthrow new TypeError('Failed to fetch');\n\t}\n\n\tconst m = ct.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n\n\tif (!m) {\n\t\tthrow new TypeError('no or bad content-type header, no multipart boundary');\n\t}\n\n\tconst parser = new MultipartParser(m[1] || m[2]);\n\n\tlet headerField;\n\tlet headerValue;\n\tlet entryValue;\n\tlet entryName;\n\tlet contentType;\n\tlet filename;\n\tconst entryChunks = [];\n\tconst formData = new FormData();\n\n\tconst onPartData = ui8a => {\n\t\tentryValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tconst appendToFile = ui8a => {\n\t\tentryChunks.push(ui8a);\n\t};\n\n\tconst appendFileToFormData = () => {\n\t\tconst file = new File(entryChunks, filename, {type: contentType});\n\t\tformData.append(entryName, file);\n\t};\n\n\tconst appendEntryToFormData = () => {\n\t\tformData.append(entryName, entryValue);\n\t};\n\n\tconst decoder = new TextDecoder('utf-8');\n\tdecoder.decode();\n\n\tparser.onPartBegin = function () {\n\t\tparser.onPartData = onPartData;\n\t\tparser.onPartEnd = appendEntryToFormData;\n\n\t\theaderField = '';\n\t\theaderValue = '';\n\t\tentryValue = '';\n\t\tentryName = '';\n\t\tcontentType = '';\n\t\tfilename = null;\n\t\tentryChunks.length = 0;\n\t};\n\n\tparser.onHeaderField = function (ui8a) {\n\t\theaderField += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderValue = function (ui8a) {\n\t\theaderValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderEnd = function () {\n\t\theaderValue += decoder.decode();\n\t\theaderField = headerField.toLowerCase();\n\n\t\tif (headerField === 'content-disposition') {\n\t\t\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\t\t\tconst m = headerValue.match(/\\bname=(\"([^\"]*)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))/i);\n\n\t\t\tif (m) {\n\t\t\t\tentryName = m[2] || m[3] || '';\n\t\t\t}\n\n\t\t\tfilename = _fileName(headerValue);\n\n\t\t\tif (filename) {\n\t\t\t\tparser.onPartData = appendToFile;\n\t\t\t\tparser.onPartEnd = appendFileToFormData;\n\t\t\t}\n\t\t} else if (headerField === 'content-type') {\n\t\t\tcontentType = headerValue;\n\t\t}\n\n\t\theaderValue = '';\n\t\theaderField = '';\n\t};\n\n\tfor await (const chunk of Body) {\n\t\tparser.write(chunk);\n\t}\n\n\tparser.end();\n\n\treturn formData;\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|