vibeusage 0.2.14 → 0.2.16
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/README.md +2 -0
- package/README.zh-CN.md +2 -0
- package/node_modules/@insforge/sdk/LICENSE +201 -0
- package/node_modules/@insforge/sdk/README.md +259 -0
- package/node_modules/@insforge/sdk/dist/index.d.mts +854 -0
- package/node_modules/@insforge/sdk/dist/index.d.ts +854 -0
- package/node_modules/@insforge/sdk/dist/index.js +1823 -0
- package/node_modules/@insforge/sdk/dist/index.js.map +1 -0
- package/node_modules/@insforge/sdk/dist/index.mjs +1784 -0
- package/node_modules/@insforge/sdk/dist/index.mjs.map +1 -0
- package/node_modules/@insforge/sdk/package.json +68 -0
- package/node_modules/@insforge/shared-schemas/dist/ai-api.schema.d.ts +583 -0
- package/node_modules/@insforge/shared-schemas/dist/ai-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/ai-api.schema.js +111 -0
- package/node_modules/@insforge/shared-schemas/dist/ai-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/ai.schema.d.ts +188 -0
- package/node_modules/@insforge/shared-schemas/dist/ai.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/ai.schema.js +48 -0
- package/node_modules/@insforge/shared-schemas/dist/ai.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/auth-api.schema.d.ts +1127 -0
- package/node_modules/@insforge/shared-schemas/dist/auth-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/auth-api.schema.js +277 -0
- package/node_modules/@insforge/shared-schemas/dist/auth-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/auth.schema.d.ts +187 -0
- package/node_modules/@insforge/shared-schemas/dist/auth.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/auth.schema.js +105 -0
- package/node_modules/@insforge/shared-schemas/dist/auth.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/cloud-events.schema.d.ts +144 -0
- package/node_modules/@insforge/shared-schemas/dist/cloud-events.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/cloud-events.schema.js +41 -0
- package/node_modules/@insforge/shared-schemas/dist/cloud-events.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/database-api.schema.d.ts +1627 -0
- package/node_modules/@insforge/shared-schemas/dist/database-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/database-api.schema.js +209 -0
- package/node_modules/@insforge/shared-schemas/dist/database-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/database.schema.d.ts +263 -0
- package/node_modules/@insforge/shared-schemas/dist/database.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/database.schema.js +89 -0
- package/node_modules/@insforge/shared-schemas/dist/database.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/docs.schema.d.ts +4 -0
- package/node_modules/@insforge/shared-schemas/dist/docs.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/docs.schema.js +22 -0
- package/node_modules/@insforge/shared-schemas/dist/docs.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/email-api.schema.d.ts +34 -0
- package/node_modules/@insforge/shared-schemas/dist/email-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/email-api.schema.js +24 -0
- package/node_modules/@insforge/shared-schemas/dist/email-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/functions-api.schema.d.ts +39 -0
- package/node_modules/@insforge/shared-schemas/dist/functions-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/functions-api.schema.js +18 -0
- package/node_modules/@insforge/shared-schemas/dist/functions-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/functions.schema.d.ts +34 -0
- package/node_modules/@insforge/shared-schemas/dist/functions.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/functions.schema.js +14 -0
- package/node_modules/@insforge/shared-schemas/dist/functions.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/index.d.ts +19 -0
- package/node_modules/@insforge/shared-schemas/dist/index.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/index.js +19 -0
- package/node_modules/@insforge/shared-schemas/dist/index.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/logs-api.schema.d.ts +237 -0
- package/node_modules/@insforge/shared-schemas/dist/logs-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/logs-api.schema.js +41 -0
- package/node_modules/@insforge/shared-schemas/dist/logs-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/logs.schema.d.ts +79 -0
- package/node_modules/@insforge/shared-schemas/dist/logs.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/logs.schema.js +31 -0
- package/node_modules/@insforge/shared-schemas/dist/logs.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/metadata.schema.d.ts +940 -0
- package/node_modules/@insforge/shared-schemas/dist/metadata.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/metadata.schema.js +50 -0
- package/node_modules/@insforge/shared-schemas/dist/metadata.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime-api.schema.d.ts +395 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime-api.schema.js +73 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime.schema.d.ts +269 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime.schema.js +109 -0
- package/node_modules/@insforge/shared-schemas/dist/realtime.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/storage-api.schema.d.ts +166 -0
- package/node_modules/@insforge/shared-schemas/dist/storage-api.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/storage-api.schema.js +49 -0
- package/node_modules/@insforge/shared-schemas/dist/storage-api.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/storage.schema.d.ts +39 -0
- package/node_modules/@insforge/shared-schemas/dist/storage.schema.d.ts.map +1 -0
- package/node_modules/@insforge/shared-schemas/dist/storage.schema.js +15 -0
- package/node_modules/@insforge/shared-schemas/dist/storage.schema.js.map +1 -0
- package/node_modules/@insforge/shared-schemas/package.json +31 -0
- package/node_modules/@socket.io/component-emitter/LICENSE +24 -0
- package/node_modules/@socket.io/component-emitter/Readme.md +79 -0
- package/node_modules/@socket.io/component-emitter/lib/cjs/index.d.ts +179 -0
- package/node_modules/@socket.io/component-emitter/lib/cjs/index.js +176 -0
- package/node_modules/@socket.io/component-emitter/lib/cjs/package.json +4 -0
- package/node_modules/@socket.io/component-emitter/lib/esm/index.d.ts +179 -0
- package/node_modules/@socket.io/component-emitter/lib/esm/index.js +169 -0
- package/node_modules/@socket.io/component-emitter/lib/esm/package.json +4 -0
- package/node_modules/@socket.io/component-emitter/package.json +28 -0
- package/node_modules/@supabase/node-fetch/LICENSE.md +22 -0
- package/node_modules/@supabase/node-fetch/README.md +633 -0
- package/node_modules/@supabase/node-fetch/browser.js +22 -0
- package/node_modules/@supabase/node-fetch/lib/index.es.js +1778 -0
- package/node_modules/@supabase/node-fetch/lib/index.js +1787 -0
- package/node_modules/@supabase/node-fetch/lib/index.mjs +1776 -0
- package/node_modules/@supabase/node-fetch/package.json +80 -0
- package/node_modules/@supabase/postgrest-js/LICENSE +21 -0
- package/node_modules/@supabase/postgrest-js/README.md +56 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestBuilder.d.ts +71 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestBuilder.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestBuilder.js +222 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestBuilder.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestClient.d.ts +74 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestClient.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestClient.js +121 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestClient.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestError.d.ts +17 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestError.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestError.js +18 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestError.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestFilterBuilder.d.ts +108 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestFilterBuilder.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestFilterBuilder.js +381 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestFilterBuilder.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestQueryBuilder.d.ts +117 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestQueryBuilder.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestQueryBuilder.js +251 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestQueryBuilder.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestTransformBuilder.d.ts +157 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestTransformBuilder.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestTransformBuilder.js +226 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestTransformBuilder.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/constants.d.ts +4 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/constants.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/constants.js +6 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/constants.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/index.d.ts +19 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/index.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/index.js +28 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/index.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/parser.d.ts +261 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/parser.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/parser.js +5 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/parser.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/result.d.ts +157 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/result.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/result.js +3 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/result.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/types.d.ts +31 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/types.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/types.js +3 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/types.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/utils.d.ts +264 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/utils.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/utils.js +3 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/select-query-parser/utils.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/types.d.ts +106 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/types.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/types.js +3 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/types.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/version.d.ts +2 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/version.d.ts.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/version.js +5 -0
- package/node_modules/@supabase/postgrest-js/dist/cjs/version.js.map +1 -0
- package/node_modules/@supabase/postgrest-js/dist/esm/wrapper.mjs +28 -0
- package/node_modules/@supabase/postgrest-js/package.json +75 -0
- package/node_modules/@supabase/postgrest-js/src/PostgrestBuilder.ts +300 -0
- package/node_modules/@supabase/postgrest-js/src/PostgrestClient.ts +192 -0
- package/node_modules/@supabase/postgrest-js/src/PostgrestError.ts +18 -0
- package/node_modules/@supabase/postgrest-js/src/PostgrestFilterBuilder.ts +604 -0
- package/node_modules/@supabase/postgrest-js/src/PostgrestQueryBuilder.ts +437 -0
- package/node_modules/@supabase/postgrest-js/src/PostgrestTransformBuilder.ts +368 -0
- package/node_modules/@supabase/postgrest-js/src/constants.ts +2 -0
- package/node_modules/@supabase/postgrest-js/src/index.ts +35 -0
- package/node_modules/@supabase/postgrest-js/src/select-query-parser/parser.ts +469 -0
- package/node_modules/@supabase/postgrest-js/src/select-query-parser/result.ts +503 -0
- package/node_modules/@supabase/postgrest-js/src/select-query-parser/types.ts +115 -0
- package/node_modules/@supabase/postgrest-js/src/select-query-parser/utils.ts +602 -0
- package/node_modules/@supabase/postgrest-js/src/types.ts +201 -0
- package/node_modules/@supabase/postgrest-js/src/version.ts +1 -0
- package/node_modules/debug/LICENSE +20 -0
- package/node_modules/debug/README.md +481 -0
- package/node_modules/debug/package.json +60 -0
- package/node_modules/debug/src/browser.js +271 -0
- package/node_modules/debug/src/common.js +274 -0
- package/node_modules/debug/src/index.js +10 -0
- package/node_modules/debug/src/node.js +263 -0
- package/node_modules/engine.io-client/LICENSE +22 -0
- package/node_modules/engine.io-client/README.md +331 -0
- package/node_modules/engine.io-client/build/cjs/browser-entrypoint.d.ts +3 -0
- package/node_modules/engine.io-client/build/cjs/browser-entrypoint.js +4 -0
- package/node_modules/engine.io-client/build/cjs/contrib/has-cors.d.ts +1 -0
- package/node_modules/engine.io-client/build/cjs/contrib/has-cors.js +14 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseqs.d.ts +15 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseqs.js +38 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseuri.d.ts +1 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseuri.js +67 -0
- package/node_modules/engine.io-client/build/cjs/globals.d.ts +4 -0
- package/node_modules/engine.io-client/build/cjs/globals.js +26 -0
- package/node_modules/engine.io-client/build/cjs/globals.node.d.ts +21 -0
- package/node_modules/engine.io-client/build/cjs/globals.node.js +97 -0
- package/node_modules/engine.io-client/build/cjs/index.d.ts +15 -0
- package/node_modules/engine.io-client/build/cjs/index.js +32 -0
- package/node_modules/engine.io-client/build/cjs/package.json +10 -0
- package/node_modules/engine.io-client/build/cjs/socket.d.ts +482 -0
- package/node_modules/engine.io-client/build/cjs/socket.js +765 -0
- package/node_modules/engine.io-client/build/cjs/transport.d.ts +106 -0
- package/node_modules/engine.io-client/build/cjs/transport.js +153 -0
- package/node_modules/engine.io-client/build/cjs/transports/index.d.ts +8 -0
- package/node_modules/engine.io-client/build/cjs/transports/index.js +11 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-fetch.d.ts +15 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-fetch.js +60 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.d.ts +108 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js +285 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.d.ts +11 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.js +44 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling.d.ts +52 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling.js +165 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.d.ts +36 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.js +136 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.node.d.ts +14 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.node.js +68 -0
- package/node_modules/engine.io-client/build/cjs/transports/webtransport.d.ts +18 -0
- package/node_modules/engine.io-client/build/cjs/transports/webtransport.js +94 -0
- package/node_modules/engine.io-client/build/cjs/util.d.ts +7 -0
- package/node_modules/engine.io-client/build/cjs/util.js +65 -0
- package/node_modules/engine.io-client/build/esm/browser-entrypoint.d.ts +3 -0
- package/node_modules/engine.io-client/build/esm/browser-entrypoint.js +2 -0
- package/node_modules/engine.io-client/build/esm/contrib/has-cors.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm/contrib/has-cors.js +11 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseqs.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseqs.js +34 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseuri.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseuri.js +64 -0
- package/node_modules/engine.io-client/build/esm/globals.d.ts +4 -0
- package/node_modules/engine.io-client/build/esm/globals.js +22 -0
- package/node_modules/engine.io-client/build/esm/globals.node.d.ts +21 -0
- package/node_modules/engine.io-client/build/esm/globals.node.js +91 -0
- package/node_modules/engine.io-client/build/esm/index.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm/index.js +15 -0
- package/node_modules/engine.io-client/build/esm/package.json +10 -0
- package/node_modules/engine.io-client/build/esm/socket.d.ts +482 -0
- package/node_modules/engine.io-client/build/esm/socket.js +727 -0
- package/node_modules/engine.io-client/build/esm/transport.d.ts +106 -0
- package/node_modules/engine.io-client/build/esm/transport.js +142 -0
- package/node_modules/engine.io-client/build/esm/transports/index.d.ts +8 -0
- package/node_modules/engine.io-client/build/esm/transports/index.js +8 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-fetch.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-fetch.js +56 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.d.ts +108 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +271 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.node.d.ts +11 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.node.js +17 -0
- package/node_modules/engine.io-client/build/esm/transports/polling.d.ts +52 -0
- package/node_modules/engine.io-client/build/esm/transports/polling.js +145 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.d.ts +36 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.js +125 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.node.d.ts +14 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.node.js +41 -0
- package/node_modules/engine.io-client/build/esm/transports/webtransport.d.ts +18 -0
- package/node_modules/engine.io-client/build/esm/transports/webtransport.js +80 -0
- package/node_modules/engine.io-client/build/esm/util.d.ts +7 -0
- package/node_modules/engine.io-client/build/esm/util.js +59 -0
- package/node_modules/engine.io-client/build/esm-debug/browser-entrypoint.d.ts +3 -0
- package/node_modules/engine.io-client/build/esm-debug/browser-entrypoint.js +2 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/has-cors.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/has-cors.js +11 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseqs.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseqs.js +34 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseuri.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseuri.js +64 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.d.ts +4 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.js +22 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.node.d.ts +21 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.node.js +91 -0
- package/node_modules/engine.io-client/build/esm-debug/index.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm-debug/index.js +15 -0
- package/node_modules/engine.io-client/build/esm-debug/package.json +10 -0
- package/node_modules/engine.io-client/build/esm-debug/socket.d.ts +482 -0
- package/node_modules/engine.io-client/build/esm-debug/socket.js +756 -0
- package/node_modules/engine.io-client/build/esm-debug/transport.d.ts +106 -0
- package/node_modules/engine.io-client/build/esm-debug/transport.js +145 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/index.d.ts +8 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/index.js +8 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-fetch.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-fetch.js +56 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.d.ts +108 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.js +276 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.d.ts +11 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.js +17 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling.d.ts +52 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling.js +158 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.d.ts +36 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.js +128 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.node.d.ts +14 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.node.js +41 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/webtransport.d.ts +18 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/webtransport.js +87 -0
- package/node_modules/engine.io-client/build/esm-debug/util.d.ts +7 -0
- package/node_modules/engine.io-client/build/esm-debug/util.js +59 -0
- package/node_modules/engine.io-client/dist/engine.io.esm.min.js +7 -0
- package/node_modules/engine.io-client/dist/engine.io.esm.min.js.map +1 -0
- package/node_modules/engine.io-client/dist/engine.io.js +2968 -0
- package/node_modules/engine.io-client/dist/engine.io.js.map +1 -0
- package/node_modules/engine.io-client/dist/engine.io.min.js +7 -0
- package/node_modules/engine.io-client/dist/engine.io.min.js.map +1 -0
- package/node_modules/engine.io-client/package.json +95 -0
- package/node_modules/engine.io-parser/LICENSE +22 -0
- package/node_modules/engine.io-parser/Readme.md +158 -0
- package/node_modules/engine.io-parser/build/cjs/commons.d.ts +14 -0
- package/node_modules/engine.io-parser/build/cjs/commons.js +19 -0
- package/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.d.ts +2 -0
- package/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js +48 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.browser.d.ts +2 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.browser.js +66 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.d.ts +2 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.js +59 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.browser.d.ts +4 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.browser.js +72 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.d.ts +3 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.js +38 -0
- package/node_modules/engine.io-parser/build/cjs/index.d.ts +9 -0
- package/node_modules/engine.io-parser/build/cjs/index.js +164 -0
- package/node_modules/engine.io-parser/build/cjs/package.json +8 -0
- package/node_modules/engine.io-parser/build/esm/commons.d.ts +14 -0
- package/node_modules/engine.io-parser/build/esm/commons.js +14 -0
- package/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.d.ts +2 -0
- package/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js +43 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.browser.d.ts +2 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.browser.js +62 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.d.ts +2 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.js +55 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.browser.d.ts +4 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.browser.js +68 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.d.ts +3 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.js +33 -0
- package/node_modules/engine.io-parser/build/esm/index.d.ts +9 -0
- package/node_modules/engine.io-parser/build/esm/index.js +156 -0
- package/node_modules/engine.io-parser/build/esm/package.json +8 -0
- package/node_modules/engine.io-parser/package.json +46 -0
- package/node_modules/ms/index.js +162 -0
- package/node_modules/ms/license.md +21 -0
- package/node_modules/ms/package.json +38 -0
- package/node_modules/ms/readme.md +59 -0
- package/node_modules/socket.io-client/LICENSE +21 -0
- package/node_modules/socket.io-client/README.md +29 -0
- package/node_modules/socket.io-client/build/cjs/browser-entrypoint.d.ts +2 -0
- package/node_modules/socket.io-client/build/cjs/browser-entrypoint.js +4 -0
- package/node_modules/socket.io-client/build/cjs/contrib/backo2.d.ts +12 -0
- package/node_modules/socket.io-client/build/cjs/contrib/backo2.js +69 -0
- package/node_modules/socket.io-client/build/cjs/index.d.ts +29 -0
- package/node_modules/socket.io-client/build/cjs/index.js +76 -0
- package/node_modules/socket.io-client/build/cjs/manager.d.ts +295 -0
- package/node_modules/socket.io-client/build/cjs/manager.js +416 -0
- package/node_modules/socket.io-client/build/cjs/on.d.ts +2 -0
- package/node_modules/socket.io-client/build/cjs/on.js +9 -0
- package/node_modules/socket.io-client/build/cjs/socket.d.ts +593 -0
- package/node_modules/socket.io-client/build/cjs/socket.js +910 -0
- package/node_modules/socket.io-client/build/cjs/url.d.ts +33 -0
- package/node_modules/socket.io-client/build/cjs/url.js +69 -0
- package/node_modules/socket.io-client/build/esm/browser-entrypoint.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm/browser-entrypoint.js +2 -0
- package/node_modules/socket.io-client/build/esm/contrib/backo2.d.ts +12 -0
- package/node_modules/socket.io-client/build/esm/contrib/backo2.js +66 -0
- package/node_modules/socket.io-client/build/esm/index.d.ts +29 -0
- package/node_modules/socket.io-client/build/esm/index.js +58 -0
- package/node_modules/socket.io-client/build/esm/manager.d.ts +295 -0
- package/node_modules/socket.io-client/build/esm/manager.js +367 -0
- package/node_modules/socket.io-client/build/esm/on.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm/on.js +6 -0
- package/node_modules/socket.io-client/build/esm/package.json +5 -0
- package/node_modules/socket.io-client/build/esm/socket.d.ts +593 -0
- package/node_modules/socket.io-client/build/esm/socket.js +882 -0
- package/node_modules/socket.io-client/build/esm/url.d.ts +33 -0
- package/node_modules/socket.io-client/build/esm/url.js +59 -0
- package/node_modules/socket.io-client/build/esm-debug/browser-entrypoint.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm-debug/browser-entrypoint.js +2 -0
- package/node_modules/socket.io-client/build/esm-debug/contrib/backo2.d.ts +12 -0
- package/node_modules/socket.io-client/build/esm-debug/contrib/backo2.js +66 -0
- package/node_modules/socket.io-client/build/esm-debug/index.d.ts +29 -0
- package/node_modules/socket.io-client/build/esm-debug/index.js +62 -0
- package/node_modules/socket.io-client/build/esm-debug/manager.d.ts +295 -0
- package/node_modules/socket.io-client/build/esm-debug/manager.js +386 -0
- package/node_modules/socket.io-client/build/esm-debug/on.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm-debug/on.js +6 -0
- package/node_modules/socket.io-client/build/esm-debug/package.json +5 -0
- package/node_modules/socket.io-client/build/esm-debug/socket.d.ts +593 -0
- package/node_modules/socket.io-client/build/esm-debug/socket.js +903 -0
- package/node_modules/socket.io-client/build/esm-debug/url.d.ts +33 -0
- package/node_modules/socket.io-client/build/esm-debug/url.js +63 -0
- package/node_modules/socket.io-client/dist/socket.io.esm.min.js +7 -0
- package/node_modules/socket.io-client/dist/socket.io.esm.min.js.map +1 -0
- package/node_modules/socket.io-client/dist/socket.io.js +4908 -0
- package/node_modules/socket.io-client/dist/socket.io.js.map +1 -0
- package/node_modules/socket.io-client/dist/socket.io.min.js +7 -0
- package/node_modules/socket.io-client/dist/socket.io.min.js.map +1 -0
- package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js +7 -0
- package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js.map +1 -0
- package/node_modules/socket.io-client/package.json +101 -0
- package/node_modules/socket.io-parser/LICENSE +20 -0
- package/node_modules/socket.io-parser/Readme.md +81 -0
- package/node_modules/socket.io-parser/build/cjs/binary.d.ts +20 -0
- package/node_modules/socket.io-parser/build/cjs/binary.js +88 -0
- package/node_modules/socket.io-parser/build/cjs/index.d.ts +90 -0
- package/node_modules/socket.io-parser/build/cjs/index.js +321 -0
- package/node_modules/socket.io-parser/build/cjs/is-binary.d.ts +7 -0
- package/node_modules/socket.io-parser/build/cjs/is-binary.js +55 -0
- package/node_modules/socket.io-parser/build/cjs/package.json +3 -0
- package/node_modules/socket.io-parser/build/esm/binary.d.ts +20 -0
- package/node_modules/socket.io-parser/build/esm/binary.js +83 -0
- package/node_modules/socket.io-parser/build/esm/index.d.ts +90 -0
- package/node_modules/socket.io-parser/build/esm/index.js +311 -0
- package/node_modules/socket.io-parser/build/esm/is-binary.d.ts +7 -0
- package/node_modules/socket.io-parser/build/esm/is-binary.js +50 -0
- package/node_modules/socket.io-parser/build/esm/package.json +3 -0
- package/node_modules/socket.io-parser/build/esm-debug/binary.d.ts +20 -0
- package/node_modules/socket.io-parser/build/esm-debug/binary.js +83 -0
- package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +90 -0
- package/node_modules/socket.io-parser/build/esm-debug/index.js +316 -0
- package/node_modules/socket.io-parser/build/esm-debug/is-binary.d.ts +7 -0
- package/node_modules/socket.io-parser/build/esm-debug/is-binary.js +50 -0
- package/node_modules/socket.io-parser/build/esm-debug/package.json +3 -0
- package/node_modules/socket.io-parser/package.json +58 -0
- package/node_modules/tr46/.npmignore +4 -0
- package/node_modules/tr46/index.js +193 -0
- package/node_modules/tr46/lib/.gitkeep +0 -0
- package/node_modules/tr46/lib/mappingTable.json +1 -0
- package/node_modules/tr46/package.json +31 -0
- package/node_modules/webidl-conversions/LICENSE.md +12 -0
- package/node_modules/webidl-conversions/README.md +53 -0
- package/node_modules/webidl-conversions/lib/index.js +189 -0
- package/node_modules/webidl-conversions/package.json +23 -0
- package/node_modules/whatwg-url/LICENSE.txt +21 -0
- package/node_modules/whatwg-url/README.md +67 -0
- package/node_modules/whatwg-url/lib/URL-impl.js +200 -0
- package/node_modules/whatwg-url/lib/URL.js +196 -0
- package/node_modules/whatwg-url/lib/public-api.js +11 -0
- package/node_modules/whatwg-url/lib/url-state-machine.js +1297 -0
- package/node_modules/whatwg-url/lib/utils.js +20 -0
- package/node_modules/whatwg-url/package.json +32 -0
- package/node_modules/ws/LICENSE +20 -0
- package/node_modules/ws/README.md +548 -0
- package/node_modules/ws/browser.js +8 -0
- package/node_modules/ws/index.js +13 -0
- package/node_modules/ws/lib/buffer-util.js +131 -0
- package/node_modules/ws/lib/constants.js +12 -0
- package/node_modules/ws/lib/event-target.js +292 -0
- package/node_modules/ws/lib/extension.js +203 -0
- package/node_modules/ws/lib/limiter.js +55 -0
- package/node_modules/ws/lib/permessage-deflate.js +514 -0
- package/node_modules/ws/lib/receiver.js +704 -0
- package/node_modules/ws/lib/sender.js +497 -0
- package/node_modules/ws/lib/stream.js +159 -0
- package/node_modules/ws/lib/subprotocol.js +62 -0
- package/node_modules/ws/lib/validation.js +130 -0
- package/node_modules/ws/lib/websocket-server.js +540 -0
- package/node_modules/ws/lib/websocket.js +1338 -0
- package/node_modules/ws/package.json +69 -0
- package/node_modules/ws/wrapper.mjs +8 -0
- package/node_modules/xmlhttprequest-ssl/LICENSE +22 -0
- package/node_modules/xmlhttprequest-ssl/README.md +67 -0
- package/node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js +689 -0
- package/node_modules/xmlhttprequest-ssl/package.json +40 -0
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +208 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/package.json +118 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +257 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5136 -0
- package/node_modules/zod/src/v4/classic/checks.ts +30 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +66 -0
- package/node_modules/zod/src/v4/classic/errors.ts +75 -0
- package/node_modules/zod/src/v4/classic/external.ts +50 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +33 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1594 -0
- package/node_modules/zod/src/v4/core/checks.ts +1283 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +134 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +424 -0
- package/node_modules/zod/src/v4/core/function.ts +176 -0
- package/node_modules/zod/src/v4/core/index.ts +15 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +143 -0
- package/node_modules/zod/src/v4/core/parse.ts +94 -0
- package/node_modules/zod/src/v4/core/regexes.ts +135 -0
- package/node_modules/zod/src/v4/core/registries.ts +96 -0
- package/node_modules/zod/src/v4/core/schemas.ts +3842 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
- package/node_modules/zod/src/v4/core/util.ts +775 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +125 -0
- package/node_modules/zod/src/v4/locales/az.ts +121 -0
- package/node_modules/zod/src/v4/locales/be.ts +184 -0
- package/node_modules/zod/src/v4/locales/ca.ts +127 -0
- package/node_modules/zod/src/v4/locales/cs.ts +142 -0
- package/node_modules/zod/src/v4/locales/de.ts +124 -0
- package/node_modules/zod/src/v4/locales/en.ts +127 -0
- package/node_modules/zod/src/v4/locales/eo.ts +125 -0
- package/node_modules/zod/src/v4/locales/es.ts +125 -0
- package/node_modules/zod/src/v4/locales/fa.ts +134 -0
- package/node_modules/zod/src/v4/locales/fi.ts +131 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
- package/node_modules/zod/src/v4/locales/fr.ts +124 -0
- package/node_modules/zod/src/v4/locales/he.ts +125 -0
- package/node_modules/zod/src/v4/locales/hu.ts +126 -0
- package/node_modules/zod/src/v4/locales/id.ts +125 -0
- package/node_modules/zod/src/v4/locales/index.ts +39 -0
- package/node_modules/zod/src/v4/locales/it.ts +125 -0
- package/node_modules/zod/src/v4/locales/ja.ts +122 -0
- package/node_modules/zod/src/v4/locales/kh.ts +126 -0
- package/node_modules/zod/src/v4/locales/ko.ts +131 -0
- package/node_modules/zod/src/v4/locales/mk.ts +127 -0
- package/node_modules/zod/src/v4/locales/ms.ts +124 -0
- package/node_modules/zod/src/v4/locales/nl.ts +126 -0
- package/node_modules/zod/src/v4/locales/no.ts +124 -0
- package/node_modules/zod/src/v4/locales/ota.ts +125 -0
- package/node_modules/zod/src/v4/locales/pl.ts +126 -0
- package/node_modules/zod/src/v4/locales/ps.ts +133 -0
- package/node_modules/zod/src/v4/locales/pt.ts +123 -0
- package/node_modules/zod/src/v4/locales/ru.ts +184 -0
- package/node_modules/zod/src/v4/locales/sl.ts +126 -0
- package/node_modules/zod/src/v4/locales/sv.ts +127 -0
- package/node_modules/zod/src/v4/locales/ta.ts +125 -0
- package/node_modules/zod/src/v4/locales/th.ts +126 -0
- package/node_modules/zod/src/v4/locales/tr.ts +121 -0
- package/node_modules/zod/src/v4/locales/ua.ts +126 -0
- package/node_modules/zod/src/v4/locales/ur.ts +126 -0
- package/node_modules/zod/src/v4/locales/vi.ts +125 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +22 -0
- package/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +62 -0
- package/node_modules/zod/src/v4/mini/parse.ts +1 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
- package/node_modules/zod/src/v4-mini/index.ts +1 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +111 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3775 -0
- package/node_modules/zod/v3/types.d.cts +1031 -0
- package/node_modules/zod/v3/types.d.ts +1031 -0
- package/node_modules/zod/v3/types.js +3693 -0
- package/node_modules/zod/v4/classic/checks.cjs +32 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +57 -0
- package/node_modules/zod/v4/classic/compat.d.cts +46 -0
- package/node_modules/zod/v4/classic/compat.d.ts +46 -0
- package/node_modules/zod/v4/classic/compat.js +27 -0
- package/node_modules/zod/v4/classic/errors.cjs +67 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +41 -0
- package/node_modules/zod/v4/classic/external.cjs +70 -0
- package/node_modules/zod/v4/classic/external.d.cts +13 -0
- package/node_modules/zod/v4/classic/external.d.ts +13 -0
- package/node_modules/zod/v4/classic/external.js +18 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/parse.cjs +32 -0
- package/node_modules/zod/v4/classic/parse.d.cts +23 -0
- package/node_modules/zod/v4/classic/parse.d.ts +23 -0
- package/node_modules/zod/v4/classic/parse.js +6 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1109 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +630 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +630 -0
- package/node_modules/zod/v4/classic/schemas.js +1006 -0
- package/node_modules/zod/v4/core/api.cjs +1039 -0
- package/node_modules/zod/v4/core/api.d.cts +284 -0
- package/node_modules/zod/v4/core/api.d.ts +284 -0
- package/node_modules/zod/v4/core/api.js +906 -0
- package/node_modules/zod/v4/core/checks.cjs +591 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +565 -0
- package/node_modules/zod/v4/core/core.cjs +67 -0
- package/node_modules/zod/v4/core/core.d.cts +49 -0
- package/node_modules/zod/v4/core/core.d.ts +49 -0
- package/node_modules/zod/v4/core/core.js +61 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +226 -0
- package/node_modules/zod/v4/core/errors.d.cts +208 -0
- package/node_modules/zod/v4/core/errors.d.ts +208 -0
- package/node_modules/zod/v4/core/errors.js +195 -0
- package/node_modules/zod/v4/core/function.cjs +102 -0
- package/node_modules/zod/v4/core/function.d.cts +52 -0
- package/node_modules/zod/v4/core/function.d.ts +52 -0
- package/node_modules/zod/v4/core/function.js +75 -0
- package/node_modules/zod/v4/core/index.cjs +44 -0
- package/node_modules/zod/v4/core/index.d.cts +15 -0
- package/node_modules/zod/v4/core/index.d.ts +15 -0
- package/node_modules/zod/v4/core/index.js +15 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +87 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +87 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/parse.cjs +87 -0
- package/node_modules/zod/v4/core/parse.d.cts +25 -0
- package/node_modules/zod/v4/core/parse.d.ts +25 -0
- package/node_modules/zod/v4/core/parse.js +57 -0
- package/node_modules/zod/v4/core/regexes.cjs +103 -0
- package/node_modules/zod/v4/core/regexes.d.cts +62 -0
- package/node_modules/zod/v4/core/regexes.d.ts +62 -0
- package/node_modules/zod/v4/core/regexes.js +95 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +1748 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1041 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1041 -0
- package/node_modules/zod/v4/core/schemas.js +1717 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.js +849 -0
- package/node_modules/zod/v4/core/util.cjs +539 -0
- package/node_modules/zod/v4/core/util.d.cts +183 -0
- package/node_modules/zod/v4/core/util.d.ts +183 -0
- package/node_modules/zod/v4/core/util.js +493 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +142 -0
- package/node_modules/zod/v4/locales/ar.d.cts +4 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +116 -0
- package/node_modules/zod/v4/locales/az.cjs +141 -0
- package/node_modules/zod/v4/locales/az.d.cts +4 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +115 -0
- package/node_modules/zod/v4/locales/be.cjs +190 -0
- package/node_modules/zod/v4/locales/be.d.cts +4 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +164 -0
- package/node_modules/zod/v4/locales/ca.cjs +144 -0
- package/node_modules/zod/v4/locales/ca.d.cts +4 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +118 -0
- package/node_modules/zod/v4/locales/cs.cjs +161 -0
- package/node_modules/zod/v4/locales/cs.d.cts +4 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +135 -0
- package/node_modules/zod/v4/locales/de.cjs +142 -0
- package/node_modules/zod/v4/locales/de.d.cts +4 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +116 -0
- package/node_modules/zod/v4/locales/en.cjs +145 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +5 -0
- package/node_modules/zod/v4/locales/en.js +117 -0
- package/node_modules/zod/v4/locales/eo.cjs +144 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +5 -0
- package/node_modules/zod/v4/locales/eo.js +116 -0
- package/node_modules/zod/v4/locales/es.cjs +143 -0
- package/node_modules/zod/v4/locales/es.d.cts +4 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +117 -0
- package/node_modules/zod/v4/locales/fa.cjs +148 -0
- package/node_modules/zod/v4/locales/fa.d.cts +4 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +122 -0
- package/node_modules/zod/v4/locales/fi.cjs +148 -0
- package/node_modules/zod/v4/locales/fi.d.cts +4 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +122 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +117 -0
- package/node_modules/zod/v4/locales/fr.cjs +142 -0
- package/node_modules/zod/v4/locales/fr.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +116 -0
- package/node_modules/zod/v4/locales/he.cjs +143 -0
- package/node_modules/zod/v4/locales/he.d.cts +4 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +117 -0
- package/node_modules/zod/v4/locales/hu.cjs +143 -0
- package/node_modules/zod/v4/locales/hu.d.cts +4 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +117 -0
- package/node_modules/zod/v4/locales/id.cjs +142 -0
- package/node_modules/zod/v4/locales/id.d.cts +4 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +116 -0
- package/node_modules/zod/v4/locales/index.cjs +84 -0
- package/node_modules/zod/v4/locales/index.d.cts +39 -0
- package/node_modules/zod/v4/locales/index.d.ts +39 -0
- package/node_modules/zod/v4/locales/index.js +39 -0
- package/node_modules/zod/v4/locales/it.cjs +143 -0
- package/node_modules/zod/v4/locales/it.d.cts +4 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +117 -0
- package/node_modules/zod/v4/locales/ja.cjs +141 -0
- package/node_modules/zod/v4/locales/ja.d.cts +4 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +115 -0
- package/node_modules/zod/v4/locales/kh.cjs +143 -0
- package/node_modules/zod/v4/locales/kh.d.cts +4 -0
- package/node_modules/zod/v4/locales/kh.d.ts +4 -0
- package/node_modules/zod/v4/locales/kh.js +117 -0
- package/node_modules/zod/v4/locales/ko.cjs +147 -0
- package/node_modules/zod/v4/locales/ko.d.cts +4 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +121 -0
- package/node_modules/zod/v4/locales/mk.cjs +144 -0
- package/node_modules/zod/v4/locales/mk.d.cts +4 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +118 -0
- package/node_modules/zod/v4/locales/ms.cjs +142 -0
- package/node_modules/zod/v4/locales/ms.d.cts +4 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +116 -0
- package/node_modules/zod/v4/locales/nl.cjs +143 -0
- package/node_modules/zod/v4/locales/nl.d.cts +4 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +117 -0
- package/node_modules/zod/v4/locales/no.cjs +142 -0
- package/node_modules/zod/v4/locales/no.d.cts +4 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +116 -0
- package/node_modules/zod/v4/locales/ota.cjs +143 -0
- package/node_modules/zod/v4/locales/ota.d.cts +4 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +117 -0
- package/node_modules/zod/v4/locales/pl.cjs +143 -0
- package/node_modules/zod/v4/locales/pl.d.cts +4 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +117 -0
- package/node_modules/zod/v4/locales/ps.cjs +148 -0
- package/node_modules/zod/v4/locales/ps.d.cts +4 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +122 -0
- package/node_modules/zod/v4/locales/pt.cjs +142 -0
- package/node_modules/zod/v4/locales/pt.d.cts +4 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +116 -0
- package/node_modules/zod/v4/locales/ru.cjs +190 -0
- package/node_modules/zod/v4/locales/ru.d.cts +4 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +164 -0
- package/node_modules/zod/v4/locales/sl.cjs +143 -0
- package/node_modules/zod/v4/locales/sl.d.cts +4 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +117 -0
- package/node_modules/zod/v4/locales/sv.cjs +144 -0
- package/node_modules/zod/v4/locales/sv.d.cts +4 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +118 -0
- package/node_modules/zod/v4/locales/ta.cjs +143 -0
- package/node_modules/zod/v4/locales/ta.d.cts +4 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +143 -0
- package/node_modules/zod/v4/locales/th.d.cts +4 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +117 -0
- package/node_modules/zod/v4/locales/tr.cjs +143 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +5 -0
- package/node_modules/zod/v4/locales/tr.js +115 -0
- package/node_modules/zod/v4/locales/ua.cjs +143 -0
- package/node_modules/zod/v4/locales/ua.d.cts +4 -0
- package/node_modules/zod/v4/locales/ua.d.ts +4 -0
- package/node_modules/zod/v4/locales/ua.js +117 -0
- package/node_modules/zod/v4/locales/ur.cjs +143 -0
- package/node_modules/zod/v4/locales/ur.d.cts +4 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +117 -0
- package/node_modules/zod/v4/locales/vi.cjs +142 -0
- package/node_modules/zod/v4/locales/vi.d.cts +4 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +116 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +116 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +117 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +47 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +17 -0
- package/node_modules/zod/v4/mini/external.cjs +62 -0
- package/node_modules/zod/v4/mini/external.d.cts +11 -0
- package/node_modules/zod/v4/mini/external.d.ts +11 -0
- package/node_modules/zod/v4/mini/external.js +13 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +60 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +30 -0
- package/node_modules/zod/v4/mini/parse.cjs +8 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +839 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +356 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +356 -0
- package/node_modules/zod/v4/mini/schemas.js +732 -0
- package/node_modules/zod/v4-mini/index.cjs +17 -0
- package/node_modules/zod/v4-mini/index.d.cts +1 -0
- package/node_modules/zod/v4-mini/index.d.ts +1 -0
- package/node_modules/zod/v4-mini/index.js +1 -0
- package/package.json +11 -4
- package/src/commands/init.js +25 -0
- package/src/commands/sync.js +38 -4
- package/src/lib/browser-auth.js +7 -3
- package/src/lib/project-usage-purge.js +100 -0
- package/src/lib/rollout.js +588 -19
- package/src/lib/uploader.js +106 -8
- package/src/lib/vibeusage-api.js +2 -2
- package/src/lib/vibeusage-public-repo.js +88 -0
|
@@ -0,0 +1,1823 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
AI: () => AI,
|
|
24
|
+
Auth: () => Auth,
|
|
25
|
+
Database: () => Database,
|
|
26
|
+
Emails: () => Emails,
|
|
27
|
+
Functions: () => Functions,
|
|
28
|
+
HttpClient: () => HttpClient,
|
|
29
|
+
InsForgeClient: () => InsForgeClient,
|
|
30
|
+
InsForgeError: () => InsForgeError,
|
|
31
|
+
Realtime: () => Realtime,
|
|
32
|
+
Storage: () => Storage,
|
|
33
|
+
StorageBucket: () => StorageBucket,
|
|
34
|
+
TokenManager: () => TokenManager,
|
|
35
|
+
createClient: () => createClient,
|
|
36
|
+
default: () => index_default
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(index_exports);
|
|
39
|
+
|
|
40
|
+
// src/types.ts
|
|
41
|
+
var InsForgeError = class _InsForgeError extends Error {
|
|
42
|
+
constructor(message, statusCode, error, nextActions) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.name = "InsForgeError";
|
|
45
|
+
this.statusCode = statusCode;
|
|
46
|
+
this.error = error;
|
|
47
|
+
this.nextActions = nextActions;
|
|
48
|
+
}
|
|
49
|
+
static fromApiError(apiError) {
|
|
50
|
+
return new _InsForgeError(
|
|
51
|
+
apiError.message,
|
|
52
|
+
apiError.statusCode,
|
|
53
|
+
apiError.error,
|
|
54
|
+
apiError.nextActions
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/lib/http-client.ts
|
|
60
|
+
var HttpClient = class {
|
|
61
|
+
constructor(config) {
|
|
62
|
+
this.userToken = null;
|
|
63
|
+
this.baseUrl = config.baseUrl || "http://localhost:7130";
|
|
64
|
+
this.fetch = config.fetch || (globalThis.fetch ? globalThis.fetch.bind(globalThis) : void 0);
|
|
65
|
+
this.anonKey = config.anonKey;
|
|
66
|
+
this.defaultHeaders = {
|
|
67
|
+
...config.headers
|
|
68
|
+
};
|
|
69
|
+
if (!this.fetch) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
"Fetch is not available. Please provide a fetch implementation in the config."
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
buildUrl(path, params) {
|
|
76
|
+
const url = new URL(path, this.baseUrl);
|
|
77
|
+
if (params) {
|
|
78
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
79
|
+
if (key === "select") {
|
|
80
|
+
let normalizedValue = value.replace(/\s+/g, " ").trim();
|
|
81
|
+
normalizedValue = normalizedValue.replace(/\s*\(\s*/g, "(").replace(/\s*\)\s*/g, ")").replace(/\(\s+/g, "(").replace(/\s+\)/g, ")").replace(/,\s+(?=[^()]*\))/g, ",");
|
|
82
|
+
url.searchParams.append(key, normalizedValue);
|
|
83
|
+
} else {
|
|
84
|
+
url.searchParams.append(key, value);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return url.toString();
|
|
89
|
+
}
|
|
90
|
+
async request(method, path, options = {}) {
|
|
91
|
+
const { params, headers = {}, body, ...fetchOptions } = options;
|
|
92
|
+
const url = this.buildUrl(path, params);
|
|
93
|
+
const requestHeaders = {
|
|
94
|
+
...this.defaultHeaders
|
|
95
|
+
};
|
|
96
|
+
const authToken = this.userToken || this.anonKey;
|
|
97
|
+
if (authToken) {
|
|
98
|
+
requestHeaders["Authorization"] = `Bearer ${authToken}`;
|
|
99
|
+
}
|
|
100
|
+
let processedBody;
|
|
101
|
+
if (body !== void 0) {
|
|
102
|
+
if (typeof FormData !== "undefined" && body instanceof FormData) {
|
|
103
|
+
processedBody = body;
|
|
104
|
+
} else {
|
|
105
|
+
if (method !== "GET") {
|
|
106
|
+
requestHeaders["Content-Type"] = "application/json;charset=UTF-8";
|
|
107
|
+
}
|
|
108
|
+
processedBody = JSON.stringify(body);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
Object.assign(requestHeaders, headers);
|
|
112
|
+
const response = await this.fetch(url, {
|
|
113
|
+
method,
|
|
114
|
+
headers: requestHeaders,
|
|
115
|
+
body: processedBody,
|
|
116
|
+
...fetchOptions
|
|
117
|
+
});
|
|
118
|
+
if (response.status === 204) {
|
|
119
|
+
return void 0;
|
|
120
|
+
}
|
|
121
|
+
let data;
|
|
122
|
+
const contentType = response.headers.get("content-type");
|
|
123
|
+
if (contentType?.includes("json")) {
|
|
124
|
+
data = await response.json();
|
|
125
|
+
} else {
|
|
126
|
+
data = await response.text();
|
|
127
|
+
}
|
|
128
|
+
if (!response.ok) {
|
|
129
|
+
if (data && typeof data === "object" && "error" in data) {
|
|
130
|
+
if (!data.statusCode && !data.status) {
|
|
131
|
+
data.statusCode = response.status;
|
|
132
|
+
}
|
|
133
|
+
const error = InsForgeError.fromApiError(data);
|
|
134
|
+
Object.keys(data).forEach((key) => {
|
|
135
|
+
if (key !== "error" && key !== "message" && key !== "statusCode") {
|
|
136
|
+
error[key] = data[key];
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
throw new InsForgeError(
|
|
142
|
+
`Request failed: ${response.statusText}`,
|
|
143
|
+
response.status,
|
|
144
|
+
"REQUEST_FAILED"
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
return data;
|
|
148
|
+
}
|
|
149
|
+
get(path, options) {
|
|
150
|
+
return this.request("GET", path, options);
|
|
151
|
+
}
|
|
152
|
+
post(path, body, options) {
|
|
153
|
+
return this.request("POST", path, { ...options, body });
|
|
154
|
+
}
|
|
155
|
+
put(path, body, options) {
|
|
156
|
+
return this.request("PUT", path, { ...options, body });
|
|
157
|
+
}
|
|
158
|
+
patch(path, body, options) {
|
|
159
|
+
return this.request("PATCH", path, { ...options, body });
|
|
160
|
+
}
|
|
161
|
+
delete(path, options) {
|
|
162
|
+
return this.request("DELETE", path, options);
|
|
163
|
+
}
|
|
164
|
+
setAuthToken(token) {
|
|
165
|
+
this.userToken = token;
|
|
166
|
+
}
|
|
167
|
+
getHeaders() {
|
|
168
|
+
const headers = { ...this.defaultHeaders };
|
|
169
|
+
const authToken = this.userToken || this.anonKey;
|
|
170
|
+
if (authToken) {
|
|
171
|
+
headers["Authorization"] = `Bearer ${authToken}`;
|
|
172
|
+
}
|
|
173
|
+
return headers;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// src/lib/token-manager.ts
|
|
178
|
+
var TOKEN_KEY = "insforge-auth-token";
|
|
179
|
+
var USER_KEY = "insforge-auth-user";
|
|
180
|
+
var CSRF_TOKEN_COOKIE = "insforge_csrf_token";
|
|
181
|
+
function getCsrfToken() {
|
|
182
|
+
if (typeof document === "undefined") return null;
|
|
183
|
+
const match = document.cookie.split(";").find((c) => c.trim().startsWith(`${CSRF_TOKEN_COOKIE}=`));
|
|
184
|
+
if (!match) return null;
|
|
185
|
+
return match.split("=")[1] || null;
|
|
186
|
+
}
|
|
187
|
+
function setCsrfToken(token) {
|
|
188
|
+
if (typeof document === "undefined") return;
|
|
189
|
+
const maxAge = 7 * 24 * 60 * 60;
|
|
190
|
+
const secure = typeof window !== "undefined" && window.location.protocol === "https:" ? "; Secure" : "";
|
|
191
|
+
document.cookie = `${CSRF_TOKEN_COOKIE}=${encodeURIComponent(token)}; path=/; max-age=${maxAge}; SameSite=Lax${secure}`;
|
|
192
|
+
}
|
|
193
|
+
function clearCsrfToken() {
|
|
194
|
+
if (typeof document === "undefined") return;
|
|
195
|
+
const secure = typeof window !== "undefined" && window.location.protocol === "https:" ? "; Secure" : "";
|
|
196
|
+
document.cookie = `${CSRF_TOKEN_COOKIE}=; path=/; max-age=0; SameSite=Lax${secure}`;
|
|
197
|
+
}
|
|
198
|
+
var TokenManager = class {
|
|
199
|
+
constructor(storage) {
|
|
200
|
+
// In-memory storage
|
|
201
|
+
this.accessToken = null;
|
|
202
|
+
this.user = null;
|
|
203
|
+
// Mode: 'memory' (new backend) or 'storage' (legacy backend, default)
|
|
204
|
+
this._mode = "storage";
|
|
205
|
+
if (storage) {
|
|
206
|
+
this.storage = storage;
|
|
207
|
+
} else if (typeof window !== "undefined" && window.localStorage) {
|
|
208
|
+
this.storage = window.localStorage;
|
|
209
|
+
} else {
|
|
210
|
+
const store = /* @__PURE__ */ new Map();
|
|
211
|
+
this.storage = {
|
|
212
|
+
getItem: (key) => store.get(key) || null,
|
|
213
|
+
setItem: (key, value) => {
|
|
214
|
+
store.set(key, value);
|
|
215
|
+
},
|
|
216
|
+
removeItem: (key) => {
|
|
217
|
+
store.delete(key);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get current mode
|
|
224
|
+
*/
|
|
225
|
+
get mode() {
|
|
226
|
+
return this._mode;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Set mode to memory (new backend with cookies + memory)
|
|
230
|
+
*/
|
|
231
|
+
setMemoryMode() {
|
|
232
|
+
if (this._mode === "storage") {
|
|
233
|
+
this.storage.removeItem(TOKEN_KEY);
|
|
234
|
+
this.storage.removeItem(USER_KEY);
|
|
235
|
+
}
|
|
236
|
+
this._mode = "memory";
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Set mode to storage (legacy backend with localStorage)
|
|
240
|
+
* Also loads existing session from localStorage
|
|
241
|
+
*/
|
|
242
|
+
setStorageMode() {
|
|
243
|
+
this._mode = "storage";
|
|
244
|
+
this.loadFromStorage();
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Load session from localStorage
|
|
248
|
+
*/
|
|
249
|
+
loadFromStorage() {
|
|
250
|
+
const token = this.storage.getItem(TOKEN_KEY);
|
|
251
|
+
const userStr = this.storage.getItem(USER_KEY);
|
|
252
|
+
if (token && userStr) {
|
|
253
|
+
try {
|
|
254
|
+
this.accessToken = token;
|
|
255
|
+
this.user = JSON.parse(userStr);
|
|
256
|
+
} catch {
|
|
257
|
+
this.clearSession();
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Save session (memory always, localStorage only in storage mode)
|
|
263
|
+
*/
|
|
264
|
+
saveSession(session) {
|
|
265
|
+
this.accessToken = session.accessToken;
|
|
266
|
+
this.user = session.user;
|
|
267
|
+
if (this._mode === "storage") {
|
|
268
|
+
this.storage.setItem(TOKEN_KEY, session.accessToken);
|
|
269
|
+
this.storage.setItem(USER_KEY, JSON.stringify(session.user));
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Get current session
|
|
274
|
+
*/
|
|
275
|
+
getSession() {
|
|
276
|
+
this.loadFromStorage();
|
|
277
|
+
if (!this.accessToken || !this.user) return null;
|
|
278
|
+
return {
|
|
279
|
+
accessToken: this.accessToken,
|
|
280
|
+
user: this.user
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get access token
|
|
285
|
+
*/
|
|
286
|
+
getAccessToken() {
|
|
287
|
+
this.loadFromStorage();
|
|
288
|
+
return this.accessToken;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Set access token
|
|
292
|
+
*/
|
|
293
|
+
setAccessToken(token) {
|
|
294
|
+
this.accessToken = token;
|
|
295
|
+
if (this._mode === "storage") {
|
|
296
|
+
this.storage.setItem(TOKEN_KEY, token);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get user
|
|
301
|
+
*/
|
|
302
|
+
getUser() {
|
|
303
|
+
return this.user;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Set user
|
|
307
|
+
*/
|
|
308
|
+
setUser(user) {
|
|
309
|
+
this.user = user;
|
|
310
|
+
if (this._mode === "storage") {
|
|
311
|
+
this.storage.setItem(USER_KEY, JSON.stringify(user));
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Clear session (both memory and localStorage)
|
|
316
|
+
*/
|
|
317
|
+
clearSession() {
|
|
318
|
+
this.accessToken = null;
|
|
319
|
+
this.user = null;
|
|
320
|
+
this.storage.removeItem(TOKEN_KEY);
|
|
321
|
+
this.storage.removeItem(USER_KEY);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Check if there's a session in localStorage (for legacy detection)
|
|
325
|
+
*/
|
|
326
|
+
hasStoredSession() {
|
|
327
|
+
const token = this.storage.getItem(TOKEN_KEY);
|
|
328
|
+
return !!token;
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
// src/modules/auth.ts
|
|
333
|
+
function isHostedAuthEnvironment() {
|
|
334
|
+
if (typeof window === "undefined") {
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
const { hostname, port, protocol } = window.location;
|
|
338
|
+
if (hostname === "localhost" && port === "7130") {
|
|
339
|
+
return true;
|
|
340
|
+
}
|
|
341
|
+
if (protocol === "https:" && hostname.endsWith(".insforge.app")) {
|
|
342
|
+
return true;
|
|
343
|
+
}
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
346
|
+
var Auth = class {
|
|
347
|
+
constructor(http, tokenManager) {
|
|
348
|
+
this.http = http;
|
|
349
|
+
this.tokenManager = tokenManager;
|
|
350
|
+
this.detectAuthCallback();
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Automatically detect and handle OAuth callback parameters in the URL
|
|
354
|
+
* This runs after initialization to seamlessly complete the OAuth flow
|
|
355
|
+
* Matches the backend's OAuth callback response (backend/src/api/routes/auth.ts:540-544)
|
|
356
|
+
*/
|
|
357
|
+
detectAuthCallback() {
|
|
358
|
+
if (typeof window === "undefined") return;
|
|
359
|
+
try {
|
|
360
|
+
const params = new URLSearchParams(window.location.search);
|
|
361
|
+
const accessToken = params.get("access_token");
|
|
362
|
+
const userId = params.get("user_id");
|
|
363
|
+
const email = params.get("email");
|
|
364
|
+
const name = params.get("name");
|
|
365
|
+
const csrfToken = params.get("csrf_token");
|
|
366
|
+
if (accessToken && userId && email) {
|
|
367
|
+
if (csrfToken) {
|
|
368
|
+
this.tokenManager.setMemoryMode();
|
|
369
|
+
setCsrfToken(csrfToken);
|
|
370
|
+
}
|
|
371
|
+
const session = {
|
|
372
|
+
accessToken,
|
|
373
|
+
user: {
|
|
374
|
+
id: userId,
|
|
375
|
+
email,
|
|
376
|
+
profile: { name: name || "" },
|
|
377
|
+
metadata: null,
|
|
378
|
+
// These fields are not provided by backend OAuth callback
|
|
379
|
+
// They'll be populated when calling getCurrentUser()
|
|
380
|
+
emailVerified: false,
|
|
381
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
382
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
this.tokenManager.saveSession(session);
|
|
386
|
+
this.http.setAuthToken(accessToken);
|
|
387
|
+
const url = new URL(window.location.href);
|
|
388
|
+
url.searchParams.delete("access_token");
|
|
389
|
+
url.searchParams.delete("user_id");
|
|
390
|
+
url.searchParams.delete("email");
|
|
391
|
+
url.searchParams.delete("name");
|
|
392
|
+
url.searchParams.delete("csrf_token");
|
|
393
|
+
if (params.has("error")) {
|
|
394
|
+
url.searchParams.delete("error");
|
|
395
|
+
}
|
|
396
|
+
window.history.replaceState({}, document.title, url.toString());
|
|
397
|
+
}
|
|
398
|
+
} catch (error) {
|
|
399
|
+
console.debug("OAuth callback detection skipped:", error);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Sign up a new user
|
|
404
|
+
*/
|
|
405
|
+
async signUp(request) {
|
|
406
|
+
try {
|
|
407
|
+
const response = await this.http.post("/api/auth/users", request);
|
|
408
|
+
if (response.accessToken && response.user && !isHostedAuthEnvironment()) {
|
|
409
|
+
const session = {
|
|
410
|
+
accessToken: response.accessToken,
|
|
411
|
+
user: response.user
|
|
412
|
+
};
|
|
413
|
+
this.tokenManager.saveSession(session);
|
|
414
|
+
this.http.setAuthToken(response.accessToken);
|
|
415
|
+
if (response.csrfToken) {
|
|
416
|
+
setCsrfToken(response.csrfToken);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
return {
|
|
420
|
+
data: response,
|
|
421
|
+
error: null
|
|
422
|
+
};
|
|
423
|
+
} catch (error) {
|
|
424
|
+
if (error instanceof InsForgeError) {
|
|
425
|
+
return { data: null, error };
|
|
426
|
+
}
|
|
427
|
+
return {
|
|
428
|
+
data: null,
|
|
429
|
+
error: new InsForgeError(
|
|
430
|
+
error instanceof Error ? error.message : "An unexpected error occurred during sign up",
|
|
431
|
+
500,
|
|
432
|
+
"UNEXPECTED_ERROR"
|
|
433
|
+
)
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Sign in with email and password
|
|
439
|
+
*/
|
|
440
|
+
async signInWithPassword(request) {
|
|
441
|
+
try {
|
|
442
|
+
const response = await this.http.post("/api/auth/sessions", request);
|
|
443
|
+
if (!isHostedAuthEnvironment()) {
|
|
444
|
+
const session = {
|
|
445
|
+
accessToken: response.accessToken,
|
|
446
|
+
user: response.user
|
|
447
|
+
};
|
|
448
|
+
this.tokenManager.saveSession(session);
|
|
449
|
+
this.http.setAuthToken(response.accessToken);
|
|
450
|
+
if (response.csrfToken) {
|
|
451
|
+
setCsrfToken(response.csrfToken);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return {
|
|
455
|
+
data: response,
|
|
456
|
+
error: null
|
|
457
|
+
};
|
|
458
|
+
} catch (error) {
|
|
459
|
+
if (error instanceof InsForgeError) {
|
|
460
|
+
return { data: null, error };
|
|
461
|
+
}
|
|
462
|
+
return {
|
|
463
|
+
data: null,
|
|
464
|
+
error: new InsForgeError(
|
|
465
|
+
"An unexpected error occurred during sign in",
|
|
466
|
+
500,
|
|
467
|
+
"UNEXPECTED_ERROR"
|
|
468
|
+
)
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Sign in with OAuth provider
|
|
474
|
+
*/
|
|
475
|
+
async signInWithOAuth(options) {
|
|
476
|
+
try {
|
|
477
|
+
const { provider, redirectTo, skipBrowserRedirect } = options;
|
|
478
|
+
const params = redirectTo ? { redirect_uri: redirectTo } : void 0;
|
|
479
|
+
const endpoint = `/api/auth/oauth/${provider}`;
|
|
480
|
+
const response = await this.http.get(endpoint, { params });
|
|
481
|
+
if (typeof window !== "undefined" && !skipBrowserRedirect) {
|
|
482
|
+
window.location.href = response.authUrl;
|
|
483
|
+
return { data: {}, error: null };
|
|
484
|
+
}
|
|
485
|
+
return {
|
|
486
|
+
data: {
|
|
487
|
+
url: response.authUrl,
|
|
488
|
+
provider
|
|
489
|
+
},
|
|
490
|
+
error: null
|
|
491
|
+
};
|
|
492
|
+
} catch (error) {
|
|
493
|
+
if (error instanceof InsForgeError) {
|
|
494
|
+
return { data: {}, error };
|
|
495
|
+
}
|
|
496
|
+
return {
|
|
497
|
+
data: {},
|
|
498
|
+
error: new InsForgeError(
|
|
499
|
+
"An unexpected error occurred during OAuth initialization",
|
|
500
|
+
500,
|
|
501
|
+
"UNEXPECTED_ERROR"
|
|
502
|
+
)
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Sign out the current user
|
|
508
|
+
*/
|
|
509
|
+
async signOut() {
|
|
510
|
+
try {
|
|
511
|
+
try {
|
|
512
|
+
await this.http.post("/api/auth/logout", void 0, { credentials: "include" });
|
|
513
|
+
} catch {
|
|
514
|
+
}
|
|
515
|
+
this.tokenManager.clearSession();
|
|
516
|
+
this.http.setAuthToken(null);
|
|
517
|
+
clearCsrfToken();
|
|
518
|
+
return { error: null };
|
|
519
|
+
} catch (error) {
|
|
520
|
+
return {
|
|
521
|
+
error: new InsForgeError(
|
|
522
|
+
"Failed to sign out",
|
|
523
|
+
500,
|
|
524
|
+
"SIGNOUT_ERROR"
|
|
525
|
+
)
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Get all public authentication configuration (OAuth + Email)
|
|
531
|
+
* Returns both OAuth providers and email authentication settings in one request
|
|
532
|
+
* This is a public endpoint that doesn't require authentication
|
|
533
|
+
*
|
|
534
|
+
* @returns Complete public authentication configuration including OAuth providers and email auth settings
|
|
535
|
+
*
|
|
536
|
+
* @example
|
|
537
|
+
* ```ts
|
|
538
|
+
* const { data, error } = await insforge.auth.getPublicAuthConfig();
|
|
539
|
+
* if (data) {
|
|
540
|
+
* console.log(`OAuth providers: ${data.oauth.data.length}`);
|
|
541
|
+
* console.log(`Password min length: ${data.email.passwordMinLength}`);
|
|
542
|
+
* }
|
|
543
|
+
* ```
|
|
544
|
+
*/
|
|
545
|
+
async getPublicAuthConfig() {
|
|
546
|
+
try {
|
|
547
|
+
const response = await this.http.get("/api/auth/public-config");
|
|
548
|
+
return {
|
|
549
|
+
data: response,
|
|
550
|
+
error: null
|
|
551
|
+
};
|
|
552
|
+
} catch (error) {
|
|
553
|
+
if (error instanceof InsForgeError) {
|
|
554
|
+
return { data: null, error };
|
|
555
|
+
}
|
|
556
|
+
return {
|
|
557
|
+
data: null,
|
|
558
|
+
error: new InsForgeError(
|
|
559
|
+
"An unexpected error occurred while fetching public authentication configuration",
|
|
560
|
+
500,
|
|
561
|
+
"UNEXPECTED_ERROR"
|
|
562
|
+
)
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Get the current user with full profile information
|
|
568
|
+
* Returns both auth info (id, email, role) and profile data (dynamic fields from users table)
|
|
569
|
+
*/
|
|
570
|
+
async getCurrentUser() {
|
|
571
|
+
try {
|
|
572
|
+
const user = this.tokenManager.getUser();
|
|
573
|
+
if (user) {
|
|
574
|
+
return { data: { user }, error: null };
|
|
575
|
+
}
|
|
576
|
+
const accessToken = this.tokenManager.getAccessToken();
|
|
577
|
+
if (!accessToken) {
|
|
578
|
+
return { data: null, error: null };
|
|
579
|
+
}
|
|
580
|
+
this.http.setAuthToken(accessToken);
|
|
581
|
+
const authResponse = await this.http.get("/api/auth/sessions/current");
|
|
582
|
+
return {
|
|
583
|
+
data: {
|
|
584
|
+
user: authResponse.user
|
|
585
|
+
},
|
|
586
|
+
error: null
|
|
587
|
+
};
|
|
588
|
+
} catch (error) {
|
|
589
|
+
if (error instanceof InsForgeError && error.statusCode === 401) {
|
|
590
|
+
await this.signOut();
|
|
591
|
+
return { data: null, error: null };
|
|
592
|
+
}
|
|
593
|
+
if (error instanceof InsForgeError) {
|
|
594
|
+
return { data: null, error };
|
|
595
|
+
}
|
|
596
|
+
return {
|
|
597
|
+
data: null,
|
|
598
|
+
error: new InsForgeError(
|
|
599
|
+
"An unexpected error occurred while fetching user",
|
|
600
|
+
500,
|
|
601
|
+
"UNEXPECTED_ERROR"
|
|
602
|
+
)
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Get any user's profile by ID
|
|
608
|
+
* Returns profile information from the users table
|
|
609
|
+
*/
|
|
610
|
+
async getProfile(userId) {
|
|
611
|
+
try {
|
|
612
|
+
const response = await this.http.get(`/api/auth/profiles/${userId}`);
|
|
613
|
+
return {
|
|
614
|
+
data: response,
|
|
615
|
+
error: null
|
|
616
|
+
};
|
|
617
|
+
} catch (error) {
|
|
618
|
+
if (error instanceof InsForgeError) {
|
|
619
|
+
return { data: null, error };
|
|
620
|
+
}
|
|
621
|
+
return {
|
|
622
|
+
data: null,
|
|
623
|
+
error: new InsForgeError(
|
|
624
|
+
"An unexpected error occurred while fetching user profile",
|
|
625
|
+
500,
|
|
626
|
+
"UNEXPECTED_ERROR"
|
|
627
|
+
)
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* Get the current session (only session data, no API call)
|
|
633
|
+
* Returns the stored JWT token and basic user info from local storage
|
|
634
|
+
*/
|
|
635
|
+
async getCurrentSession() {
|
|
636
|
+
try {
|
|
637
|
+
const session = this.tokenManager.getSession();
|
|
638
|
+
if (session) {
|
|
639
|
+
this.http.setAuthToken(session.accessToken);
|
|
640
|
+
return { data: { session }, error: null };
|
|
641
|
+
}
|
|
642
|
+
if (typeof window !== "undefined") {
|
|
643
|
+
try {
|
|
644
|
+
const csrfToken = getCsrfToken();
|
|
645
|
+
const response = await this.http.post(
|
|
646
|
+
"/api/auth/refresh",
|
|
647
|
+
void 0,
|
|
648
|
+
{
|
|
649
|
+
headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {},
|
|
650
|
+
credentials: "include"
|
|
651
|
+
}
|
|
652
|
+
);
|
|
653
|
+
if (response.accessToken) {
|
|
654
|
+
this.tokenManager.setMemoryMode();
|
|
655
|
+
this.tokenManager.setAccessToken(response.accessToken);
|
|
656
|
+
this.http.setAuthToken(response.accessToken);
|
|
657
|
+
if (response.user) {
|
|
658
|
+
this.tokenManager.setUser(response.user);
|
|
659
|
+
}
|
|
660
|
+
if (response.csrfToken) {
|
|
661
|
+
setCsrfToken(response.csrfToken);
|
|
662
|
+
}
|
|
663
|
+
return {
|
|
664
|
+
data: { session: this.tokenManager.getSession() },
|
|
665
|
+
error: null
|
|
666
|
+
};
|
|
667
|
+
}
|
|
668
|
+
} catch (error) {
|
|
669
|
+
if (error instanceof InsForgeError) {
|
|
670
|
+
if (error.statusCode === 404) {
|
|
671
|
+
this.tokenManager.setStorageMode();
|
|
672
|
+
const session2 = this.tokenManager.getSession();
|
|
673
|
+
if (session2) {
|
|
674
|
+
return { data: { session: session2 }, error: null };
|
|
675
|
+
}
|
|
676
|
+
return { data: { session: null }, error: null };
|
|
677
|
+
}
|
|
678
|
+
return { data: { session: null }, error };
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
return { data: { session: null }, error: null };
|
|
683
|
+
} catch (error) {
|
|
684
|
+
if (error instanceof InsForgeError) {
|
|
685
|
+
return { data: { session: null }, error };
|
|
686
|
+
}
|
|
687
|
+
return {
|
|
688
|
+
data: { session: null },
|
|
689
|
+
error: new InsForgeError(
|
|
690
|
+
"An unexpected error occurred while getting session",
|
|
691
|
+
500,
|
|
692
|
+
"UNEXPECTED_ERROR"
|
|
693
|
+
)
|
|
694
|
+
};
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
/**
|
|
698
|
+
* Set/Update the current user's profile
|
|
699
|
+
* Updates profile information in the users table (supports any dynamic fields)
|
|
700
|
+
* Requires authentication
|
|
701
|
+
*/
|
|
702
|
+
async setProfile(profile) {
|
|
703
|
+
try {
|
|
704
|
+
const response = await this.http.patch(
|
|
705
|
+
"/api/auth/profiles/current",
|
|
706
|
+
{ profile }
|
|
707
|
+
);
|
|
708
|
+
return {
|
|
709
|
+
data: response,
|
|
710
|
+
error: null
|
|
711
|
+
};
|
|
712
|
+
} catch (error) {
|
|
713
|
+
if (error instanceof InsForgeError) {
|
|
714
|
+
return { data: null, error };
|
|
715
|
+
}
|
|
716
|
+
return {
|
|
717
|
+
data: null,
|
|
718
|
+
error: new InsForgeError(
|
|
719
|
+
"An unexpected error occurred while updating user profile",
|
|
720
|
+
500,
|
|
721
|
+
"UNEXPECTED_ERROR"
|
|
722
|
+
)
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
/**
|
|
727
|
+
* Send email verification (code or link based on config)
|
|
728
|
+
*
|
|
729
|
+
* Send email verification using the method configured in auth settings (verifyEmailMethod).
|
|
730
|
+
* When method is 'code', sends a 6-digit numeric code. When method is 'link', sends a magic link.
|
|
731
|
+
* Prevents user enumeration by returning success even if email doesn't exist.
|
|
732
|
+
*/
|
|
733
|
+
async sendVerificationEmail(request) {
|
|
734
|
+
try {
|
|
735
|
+
const response = await this.http.post(
|
|
736
|
+
"/api/auth/email/send-verification",
|
|
737
|
+
request
|
|
738
|
+
);
|
|
739
|
+
return {
|
|
740
|
+
data: response,
|
|
741
|
+
error: null
|
|
742
|
+
};
|
|
743
|
+
} catch (error) {
|
|
744
|
+
if (error instanceof InsForgeError) {
|
|
745
|
+
return { data: null, error };
|
|
746
|
+
}
|
|
747
|
+
return {
|
|
748
|
+
data: null,
|
|
749
|
+
error: new InsForgeError(
|
|
750
|
+
"An unexpected error occurred while sending verification code",
|
|
751
|
+
500,
|
|
752
|
+
"UNEXPECTED_ERROR"
|
|
753
|
+
)
|
|
754
|
+
};
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
/**
|
|
758
|
+
* Send password reset (code or link based on config)
|
|
759
|
+
*
|
|
760
|
+
* Send password reset email using the method configured in auth settings (resetPasswordMethod).
|
|
761
|
+
* When method is 'code', sends a 6-digit numeric code for two-step flow.
|
|
762
|
+
* When method is 'link', sends a magic link.
|
|
763
|
+
* Prevents user enumeration by returning success even if email doesn't exist.
|
|
764
|
+
*/
|
|
765
|
+
async sendResetPasswordEmail(request) {
|
|
766
|
+
try {
|
|
767
|
+
const response = await this.http.post(
|
|
768
|
+
"/api/auth/email/send-reset-password",
|
|
769
|
+
request
|
|
770
|
+
);
|
|
771
|
+
return {
|
|
772
|
+
data: response,
|
|
773
|
+
error: null
|
|
774
|
+
};
|
|
775
|
+
} catch (error) {
|
|
776
|
+
if (error instanceof InsForgeError) {
|
|
777
|
+
return { data: null, error };
|
|
778
|
+
}
|
|
779
|
+
return {
|
|
780
|
+
data: null,
|
|
781
|
+
error: new InsForgeError(
|
|
782
|
+
"An unexpected error occurred while sending password reset code",
|
|
783
|
+
500,
|
|
784
|
+
"UNEXPECTED_ERROR"
|
|
785
|
+
)
|
|
786
|
+
};
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
/**
|
|
790
|
+
* Exchange reset password code for reset token
|
|
791
|
+
*
|
|
792
|
+
* Step 1 of two-step password reset flow (only used when resetPasswordMethod is 'code'):
|
|
793
|
+
* 1. Verify the 6-digit code sent to user's email
|
|
794
|
+
* 2. Return a reset token that can be used to actually reset the password
|
|
795
|
+
*
|
|
796
|
+
* This endpoint is not used when resetPasswordMethod is 'link' (magic link flow is direct).
|
|
797
|
+
*/
|
|
798
|
+
async exchangeResetPasswordToken(request) {
|
|
799
|
+
try {
|
|
800
|
+
const response = await this.http.post(
|
|
801
|
+
"/api/auth/email/exchange-reset-password-token",
|
|
802
|
+
request
|
|
803
|
+
);
|
|
804
|
+
return {
|
|
805
|
+
data: response,
|
|
806
|
+
error: null
|
|
807
|
+
};
|
|
808
|
+
} catch (error) {
|
|
809
|
+
if (error instanceof InsForgeError) {
|
|
810
|
+
return { data: null, error };
|
|
811
|
+
}
|
|
812
|
+
return {
|
|
813
|
+
data: null,
|
|
814
|
+
error: new InsForgeError(
|
|
815
|
+
"An unexpected error occurred while verifying reset code",
|
|
816
|
+
500,
|
|
817
|
+
"UNEXPECTED_ERROR"
|
|
818
|
+
)
|
|
819
|
+
};
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* Reset password with token
|
|
824
|
+
*
|
|
825
|
+
* Reset user password with a token. The token can be:
|
|
826
|
+
* - Magic link token (64-character hex token from send-reset-password when method is 'link')
|
|
827
|
+
* - Reset token (from exchange-reset-password-token after code verification when method is 'code')
|
|
828
|
+
*
|
|
829
|
+
* Both token types use RESET_PASSWORD purpose and are verified the same way.
|
|
830
|
+
*
|
|
831
|
+
* Flow summary:
|
|
832
|
+
* - Code method: send-reset-password → exchange-reset-password-token → reset-password (with resetToken)
|
|
833
|
+
* - Link method: send-reset-password → reset-password (with link token directly)
|
|
834
|
+
*/
|
|
835
|
+
async resetPassword(request) {
|
|
836
|
+
try {
|
|
837
|
+
const response = await this.http.post(
|
|
838
|
+
"/api/auth/email/reset-password",
|
|
839
|
+
request
|
|
840
|
+
);
|
|
841
|
+
return {
|
|
842
|
+
data: response,
|
|
843
|
+
error: null
|
|
844
|
+
};
|
|
845
|
+
} catch (error) {
|
|
846
|
+
if (error instanceof InsForgeError) {
|
|
847
|
+
return { data: null, error };
|
|
848
|
+
}
|
|
849
|
+
return {
|
|
850
|
+
data: null,
|
|
851
|
+
error: new InsForgeError(
|
|
852
|
+
"An unexpected error occurred while resetting password",
|
|
853
|
+
500,
|
|
854
|
+
"UNEXPECTED_ERROR"
|
|
855
|
+
)
|
|
856
|
+
};
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* Verify email with code or link
|
|
861
|
+
*
|
|
862
|
+
* Verify email address using the method configured in auth settings (verifyEmailMethod):
|
|
863
|
+
* - Code verification: Provide both `email` and `otp` (6-digit numeric code)
|
|
864
|
+
* - Link verification: Provide only `otp` (64-character hex token from magic link)
|
|
865
|
+
*
|
|
866
|
+
* Successfully verified users will receive a session token.
|
|
867
|
+
*
|
|
868
|
+
* The email verification link sent to users always points to the backend API endpoint.
|
|
869
|
+
* If `verifyEmailRedirectTo` is configured, the backend will redirect to that URL after successful verification.
|
|
870
|
+
* Otherwise, a default success page is displayed.
|
|
871
|
+
*/
|
|
872
|
+
async verifyEmail(request) {
|
|
873
|
+
try {
|
|
874
|
+
const response = await this.http.post(
|
|
875
|
+
"/api/auth/email/verify",
|
|
876
|
+
request
|
|
877
|
+
);
|
|
878
|
+
if (!isHostedAuthEnvironment()) {
|
|
879
|
+
const session = {
|
|
880
|
+
accessToken: response.accessToken,
|
|
881
|
+
user: response.user
|
|
882
|
+
};
|
|
883
|
+
this.tokenManager.saveSession(session);
|
|
884
|
+
this.http.setAuthToken(response.accessToken);
|
|
885
|
+
if (response.csrfToken) {
|
|
886
|
+
setCsrfToken(response.csrfToken);
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
return {
|
|
890
|
+
data: response,
|
|
891
|
+
error: null
|
|
892
|
+
};
|
|
893
|
+
} catch (error) {
|
|
894
|
+
if (error instanceof InsForgeError) {
|
|
895
|
+
return { data: null, error };
|
|
896
|
+
}
|
|
897
|
+
return {
|
|
898
|
+
data: null,
|
|
899
|
+
error: new InsForgeError(
|
|
900
|
+
"An unexpected error occurred while verifying email",
|
|
901
|
+
500,
|
|
902
|
+
"UNEXPECTED_ERROR"
|
|
903
|
+
)
|
|
904
|
+
};
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
};
|
|
908
|
+
|
|
909
|
+
// src/modules/database-postgrest.ts
|
|
910
|
+
var import_postgrest_js = require("@supabase/postgrest-js");
|
|
911
|
+
function createInsForgePostgrestFetch(httpClient, tokenManager) {
|
|
912
|
+
return async (input, init) => {
|
|
913
|
+
const url = typeof input === "string" ? input : input.toString();
|
|
914
|
+
const urlObj = new URL(url);
|
|
915
|
+
const tableName = urlObj.pathname.slice(1);
|
|
916
|
+
const insforgeUrl = `${httpClient.baseUrl}/api/database/records/${tableName}${urlObj.search}`;
|
|
917
|
+
const token = tokenManager.getAccessToken();
|
|
918
|
+
const httpHeaders = httpClient.getHeaders();
|
|
919
|
+
const authToken = token || httpHeaders["Authorization"]?.replace("Bearer ", "");
|
|
920
|
+
const headers = new Headers(init?.headers);
|
|
921
|
+
if (authToken && !headers.has("Authorization")) {
|
|
922
|
+
headers.set("Authorization", `Bearer ${authToken}`);
|
|
923
|
+
}
|
|
924
|
+
const response = await fetch(insforgeUrl, {
|
|
925
|
+
...init,
|
|
926
|
+
headers
|
|
927
|
+
});
|
|
928
|
+
return response;
|
|
929
|
+
};
|
|
930
|
+
}
|
|
931
|
+
var Database = class {
|
|
932
|
+
constructor(httpClient, tokenManager) {
|
|
933
|
+
this.postgrest = new import_postgrest_js.PostgrestClient("http://dummy", {
|
|
934
|
+
fetch: createInsForgePostgrestFetch(httpClient, tokenManager),
|
|
935
|
+
headers: {}
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
/**
|
|
939
|
+
* Create a query builder for a table
|
|
940
|
+
*
|
|
941
|
+
* @example
|
|
942
|
+
* // Basic query
|
|
943
|
+
* const { data, error } = await client.database
|
|
944
|
+
* .from('posts')
|
|
945
|
+
* .select('*')
|
|
946
|
+
* .eq('user_id', userId);
|
|
947
|
+
*
|
|
948
|
+
* // With count (Supabase style!)
|
|
949
|
+
* const { data, error, count } = await client.database
|
|
950
|
+
* .from('posts')
|
|
951
|
+
* .select('*', { count: 'exact' })
|
|
952
|
+
* .range(0, 9);
|
|
953
|
+
*
|
|
954
|
+
* // Just get count, no data
|
|
955
|
+
* const { count } = await client.database
|
|
956
|
+
* .from('posts')
|
|
957
|
+
* .select('*', { count: 'exact', head: true });
|
|
958
|
+
*
|
|
959
|
+
* // Complex queries with OR
|
|
960
|
+
* const { data } = await client.database
|
|
961
|
+
* .from('posts')
|
|
962
|
+
* .select('*, users!inner(*)')
|
|
963
|
+
* .or('status.eq.active,status.eq.pending');
|
|
964
|
+
*
|
|
965
|
+
* // All features work:
|
|
966
|
+
* - Nested selects
|
|
967
|
+
* - Foreign key expansion
|
|
968
|
+
* - OR/AND/NOT conditions
|
|
969
|
+
* - Count with head
|
|
970
|
+
* - Range pagination
|
|
971
|
+
* - Upserts
|
|
972
|
+
*/
|
|
973
|
+
from(table) {
|
|
974
|
+
return this.postgrest.from(table);
|
|
975
|
+
}
|
|
976
|
+
};
|
|
977
|
+
|
|
978
|
+
// src/modules/storage.ts
|
|
979
|
+
var StorageBucket = class {
|
|
980
|
+
constructor(bucketName, http) {
|
|
981
|
+
this.bucketName = bucketName;
|
|
982
|
+
this.http = http;
|
|
983
|
+
}
|
|
984
|
+
/**
|
|
985
|
+
* Upload a file with a specific key
|
|
986
|
+
* Uses the upload strategy from backend (direct or presigned)
|
|
987
|
+
* @param path - The object key/path
|
|
988
|
+
* @param file - File or Blob to upload
|
|
989
|
+
*/
|
|
990
|
+
async upload(path, file) {
|
|
991
|
+
try {
|
|
992
|
+
const strategyResponse = await this.http.post(
|
|
993
|
+
`/api/storage/buckets/${this.bucketName}/upload-strategy`,
|
|
994
|
+
{
|
|
995
|
+
filename: path,
|
|
996
|
+
contentType: file.type || "application/octet-stream",
|
|
997
|
+
size: file.size
|
|
998
|
+
}
|
|
999
|
+
);
|
|
1000
|
+
if (strategyResponse.method === "presigned") {
|
|
1001
|
+
return await this.uploadWithPresignedUrl(strategyResponse, file);
|
|
1002
|
+
}
|
|
1003
|
+
if (strategyResponse.method === "direct") {
|
|
1004
|
+
const formData = new FormData();
|
|
1005
|
+
formData.append("file", file);
|
|
1006
|
+
const response = await this.http.request(
|
|
1007
|
+
"PUT",
|
|
1008
|
+
`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(path)}`,
|
|
1009
|
+
{
|
|
1010
|
+
body: formData,
|
|
1011
|
+
headers: {
|
|
1012
|
+
// Don't set Content-Type, let browser set multipart boundary
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
);
|
|
1016
|
+
return { data: response, error: null };
|
|
1017
|
+
}
|
|
1018
|
+
throw new InsForgeError(
|
|
1019
|
+
`Unsupported upload method: ${strategyResponse.method}`,
|
|
1020
|
+
500,
|
|
1021
|
+
"STORAGE_ERROR"
|
|
1022
|
+
);
|
|
1023
|
+
} catch (error) {
|
|
1024
|
+
return {
|
|
1025
|
+
data: null,
|
|
1026
|
+
error: error instanceof InsForgeError ? error : new InsForgeError(
|
|
1027
|
+
"Upload failed",
|
|
1028
|
+
500,
|
|
1029
|
+
"STORAGE_ERROR"
|
|
1030
|
+
)
|
|
1031
|
+
};
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
/**
|
|
1035
|
+
* Upload a file with auto-generated key
|
|
1036
|
+
* Uses the upload strategy from backend (direct or presigned)
|
|
1037
|
+
* @param file - File or Blob to upload
|
|
1038
|
+
*/
|
|
1039
|
+
async uploadAuto(file) {
|
|
1040
|
+
try {
|
|
1041
|
+
const filename = file instanceof File ? file.name : "file";
|
|
1042
|
+
const strategyResponse = await this.http.post(
|
|
1043
|
+
`/api/storage/buckets/${this.bucketName}/upload-strategy`,
|
|
1044
|
+
{
|
|
1045
|
+
filename,
|
|
1046
|
+
contentType: file.type || "application/octet-stream",
|
|
1047
|
+
size: file.size
|
|
1048
|
+
}
|
|
1049
|
+
);
|
|
1050
|
+
if (strategyResponse.method === "presigned") {
|
|
1051
|
+
return await this.uploadWithPresignedUrl(strategyResponse, file);
|
|
1052
|
+
}
|
|
1053
|
+
if (strategyResponse.method === "direct") {
|
|
1054
|
+
const formData = new FormData();
|
|
1055
|
+
formData.append("file", file);
|
|
1056
|
+
const response = await this.http.request(
|
|
1057
|
+
"POST",
|
|
1058
|
+
`/api/storage/buckets/${this.bucketName}/objects`,
|
|
1059
|
+
{
|
|
1060
|
+
body: formData,
|
|
1061
|
+
headers: {
|
|
1062
|
+
// Don't set Content-Type, let browser set multipart boundary
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
);
|
|
1066
|
+
return { data: response, error: null };
|
|
1067
|
+
}
|
|
1068
|
+
throw new InsForgeError(
|
|
1069
|
+
`Unsupported upload method: ${strategyResponse.method}`,
|
|
1070
|
+
500,
|
|
1071
|
+
"STORAGE_ERROR"
|
|
1072
|
+
);
|
|
1073
|
+
} catch (error) {
|
|
1074
|
+
return {
|
|
1075
|
+
data: null,
|
|
1076
|
+
error: error instanceof InsForgeError ? error : new InsForgeError(
|
|
1077
|
+
"Upload failed",
|
|
1078
|
+
500,
|
|
1079
|
+
"STORAGE_ERROR"
|
|
1080
|
+
)
|
|
1081
|
+
};
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
/**
|
|
1085
|
+
* Internal method to handle presigned URL uploads
|
|
1086
|
+
*/
|
|
1087
|
+
async uploadWithPresignedUrl(strategy, file) {
|
|
1088
|
+
try {
|
|
1089
|
+
const formData = new FormData();
|
|
1090
|
+
if (strategy.fields) {
|
|
1091
|
+
Object.entries(strategy.fields).forEach(([key, value]) => {
|
|
1092
|
+
formData.append(key, value);
|
|
1093
|
+
});
|
|
1094
|
+
}
|
|
1095
|
+
formData.append("file", file);
|
|
1096
|
+
const uploadResponse = await fetch(strategy.uploadUrl, {
|
|
1097
|
+
method: "POST",
|
|
1098
|
+
body: formData
|
|
1099
|
+
});
|
|
1100
|
+
if (!uploadResponse.ok) {
|
|
1101
|
+
throw new InsForgeError(
|
|
1102
|
+
`Upload to storage failed: ${uploadResponse.statusText}`,
|
|
1103
|
+
uploadResponse.status,
|
|
1104
|
+
"STORAGE_ERROR"
|
|
1105
|
+
);
|
|
1106
|
+
}
|
|
1107
|
+
if (strategy.confirmRequired && strategy.confirmUrl) {
|
|
1108
|
+
const confirmResponse = await this.http.post(
|
|
1109
|
+
strategy.confirmUrl,
|
|
1110
|
+
{
|
|
1111
|
+
size: file.size,
|
|
1112
|
+
contentType: file.type || "application/octet-stream"
|
|
1113
|
+
}
|
|
1114
|
+
);
|
|
1115
|
+
return { data: confirmResponse, error: null };
|
|
1116
|
+
}
|
|
1117
|
+
return {
|
|
1118
|
+
data: {
|
|
1119
|
+
key: strategy.key,
|
|
1120
|
+
bucket: this.bucketName,
|
|
1121
|
+
size: file.size,
|
|
1122
|
+
mimeType: file.type || "application/octet-stream",
|
|
1123
|
+
uploadedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1124
|
+
url: this.getPublicUrl(strategy.key)
|
|
1125
|
+
},
|
|
1126
|
+
error: null
|
|
1127
|
+
};
|
|
1128
|
+
} catch (error) {
|
|
1129
|
+
throw error instanceof InsForgeError ? error : new InsForgeError(
|
|
1130
|
+
"Presigned upload failed",
|
|
1131
|
+
500,
|
|
1132
|
+
"STORAGE_ERROR"
|
|
1133
|
+
);
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
/**
|
|
1137
|
+
* Download a file
|
|
1138
|
+
* Uses the download strategy from backend (direct or presigned)
|
|
1139
|
+
* @param path - The object key/path
|
|
1140
|
+
* Returns the file as a Blob
|
|
1141
|
+
*/
|
|
1142
|
+
async download(path) {
|
|
1143
|
+
try {
|
|
1144
|
+
const strategyResponse = await this.http.post(
|
|
1145
|
+
`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(path)}/download-strategy`,
|
|
1146
|
+
{ expiresIn: 3600 }
|
|
1147
|
+
);
|
|
1148
|
+
const downloadUrl = strategyResponse.url;
|
|
1149
|
+
const headers = {};
|
|
1150
|
+
if (strategyResponse.method === "direct") {
|
|
1151
|
+
Object.assign(headers, this.http.getHeaders());
|
|
1152
|
+
}
|
|
1153
|
+
const response = await fetch(downloadUrl, {
|
|
1154
|
+
method: "GET",
|
|
1155
|
+
headers
|
|
1156
|
+
});
|
|
1157
|
+
if (!response.ok) {
|
|
1158
|
+
try {
|
|
1159
|
+
const error = await response.json();
|
|
1160
|
+
throw InsForgeError.fromApiError(error);
|
|
1161
|
+
} catch {
|
|
1162
|
+
throw new InsForgeError(
|
|
1163
|
+
`Download failed: ${response.statusText}`,
|
|
1164
|
+
response.status,
|
|
1165
|
+
"STORAGE_ERROR"
|
|
1166
|
+
);
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
const blob = await response.blob();
|
|
1170
|
+
return { data: blob, error: null };
|
|
1171
|
+
} catch (error) {
|
|
1172
|
+
return {
|
|
1173
|
+
data: null,
|
|
1174
|
+
error: error instanceof InsForgeError ? error : new InsForgeError(
|
|
1175
|
+
"Download failed",
|
|
1176
|
+
500,
|
|
1177
|
+
"STORAGE_ERROR"
|
|
1178
|
+
)
|
|
1179
|
+
};
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
/**
|
|
1183
|
+
* Get public URL for a file
|
|
1184
|
+
* @param path - The object key/path
|
|
1185
|
+
*/
|
|
1186
|
+
getPublicUrl(path) {
|
|
1187
|
+
return `${this.http.baseUrl}/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(path)}`;
|
|
1188
|
+
}
|
|
1189
|
+
/**
|
|
1190
|
+
* List objects in the bucket
|
|
1191
|
+
* @param prefix - Filter by key prefix
|
|
1192
|
+
* @param search - Search in file names
|
|
1193
|
+
* @param limit - Maximum number of results (default: 100, max: 1000)
|
|
1194
|
+
* @param offset - Number of results to skip
|
|
1195
|
+
*/
|
|
1196
|
+
async list(options) {
|
|
1197
|
+
try {
|
|
1198
|
+
const params = {};
|
|
1199
|
+
if (options?.prefix) params.prefix = options.prefix;
|
|
1200
|
+
if (options?.search) params.search = options.search;
|
|
1201
|
+
if (options?.limit) params.limit = options.limit.toString();
|
|
1202
|
+
if (options?.offset) params.offset = options.offset.toString();
|
|
1203
|
+
const response = await this.http.get(
|
|
1204
|
+
`/api/storage/buckets/${this.bucketName}/objects`,
|
|
1205
|
+
{ params }
|
|
1206
|
+
);
|
|
1207
|
+
return { data: response, error: null };
|
|
1208
|
+
} catch (error) {
|
|
1209
|
+
return {
|
|
1210
|
+
data: null,
|
|
1211
|
+
error: error instanceof InsForgeError ? error : new InsForgeError(
|
|
1212
|
+
"List failed",
|
|
1213
|
+
500,
|
|
1214
|
+
"STORAGE_ERROR"
|
|
1215
|
+
)
|
|
1216
|
+
};
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* Delete a file
|
|
1221
|
+
* @param path - The object key/path
|
|
1222
|
+
*/
|
|
1223
|
+
async remove(path) {
|
|
1224
|
+
try {
|
|
1225
|
+
const response = await this.http.delete(
|
|
1226
|
+
`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(path)}`
|
|
1227
|
+
);
|
|
1228
|
+
return { data: response, error: null };
|
|
1229
|
+
} catch (error) {
|
|
1230
|
+
return {
|
|
1231
|
+
data: null,
|
|
1232
|
+
error: error instanceof InsForgeError ? error : new InsForgeError(
|
|
1233
|
+
"Delete failed",
|
|
1234
|
+
500,
|
|
1235
|
+
"STORAGE_ERROR"
|
|
1236
|
+
)
|
|
1237
|
+
};
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
};
|
|
1241
|
+
var Storage = class {
|
|
1242
|
+
constructor(http) {
|
|
1243
|
+
this.http = http;
|
|
1244
|
+
}
|
|
1245
|
+
/**
|
|
1246
|
+
* Get a bucket instance for operations
|
|
1247
|
+
* @param bucketName - Name of the bucket
|
|
1248
|
+
*/
|
|
1249
|
+
from(bucketName) {
|
|
1250
|
+
return new StorageBucket(bucketName, this.http);
|
|
1251
|
+
}
|
|
1252
|
+
};
|
|
1253
|
+
|
|
1254
|
+
// src/modules/ai.ts
|
|
1255
|
+
var AI = class {
|
|
1256
|
+
constructor(http) {
|
|
1257
|
+
this.http = http;
|
|
1258
|
+
this.chat = new Chat(http);
|
|
1259
|
+
this.images = new Images(http);
|
|
1260
|
+
}
|
|
1261
|
+
};
|
|
1262
|
+
var Chat = class {
|
|
1263
|
+
constructor(http) {
|
|
1264
|
+
this.completions = new ChatCompletions(http);
|
|
1265
|
+
}
|
|
1266
|
+
};
|
|
1267
|
+
var ChatCompletions = class {
|
|
1268
|
+
constructor(http) {
|
|
1269
|
+
this.http = http;
|
|
1270
|
+
}
|
|
1271
|
+
/**
|
|
1272
|
+
* Create a chat completion - OpenAI-like response format
|
|
1273
|
+
*
|
|
1274
|
+
* @example
|
|
1275
|
+
* ```typescript
|
|
1276
|
+
* // Non-streaming
|
|
1277
|
+
* const completion = await client.ai.chat.completions.create({
|
|
1278
|
+
* model: 'gpt-4',
|
|
1279
|
+
* messages: [{ role: 'user', content: 'Hello!' }]
|
|
1280
|
+
* });
|
|
1281
|
+
* console.log(completion.choices[0].message.content);
|
|
1282
|
+
*
|
|
1283
|
+
* // With images
|
|
1284
|
+
* const response = await client.ai.chat.completions.create({
|
|
1285
|
+
* model: 'gpt-4-vision',
|
|
1286
|
+
* messages: [{
|
|
1287
|
+
* role: 'user',
|
|
1288
|
+
* content: 'What is in this image?',
|
|
1289
|
+
* images: [{ url: 'https://example.com/image.jpg' }]
|
|
1290
|
+
* }]
|
|
1291
|
+
* });
|
|
1292
|
+
*
|
|
1293
|
+
* // Streaming - returns async iterable
|
|
1294
|
+
* const stream = await client.ai.chat.completions.create({
|
|
1295
|
+
* model: 'gpt-4',
|
|
1296
|
+
* messages: [{ role: 'user', content: 'Tell me a story' }],
|
|
1297
|
+
* stream: true
|
|
1298
|
+
* });
|
|
1299
|
+
*
|
|
1300
|
+
* for await (const chunk of stream) {
|
|
1301
|
+
* if (chunk.choices[0]?.delta?.content) {
|
|
1302
|
+
* process.stdout.write(chunk.choices[0].delta.content);
|
|
1303
|
+
* }
|
|
1304
|
+
* }
|
|
1305
|
+
* ```
|
|
1306
|
+
*/
|
|
1307
|
+
async create(params) {
|
|
1308
|
+
const backendParams = {
|
|
1309
|
+
model: params.model,
|
|
1310
|
+
messages: params.messages,
|
|
1311
|
+
temperature: params.temperature,
|
|
1312
|
+
maxTokens: params.maxTokens,
|
|
1313
|
+
topP: params.topP,
|
|
1314
|
+
stream: params.stream
|
|
1315
|
+
};
|
|
1316
|
+
if (params.stream) {
|
|
1317
|
+
const headers = this.http.getHeaders();
|
|
1318
|
+
headers["Content-Type"] = "application/json";
|
|
1319
|
+
const response2 = await this.http.fetch(
|
|
1320
|
+
`${this.http.baseUrl}/api/ai/chat/completion`,
|
|
1321
|
+
{
|
|
1322
|
+
method: "POST",
|
|
1323
|
+
headers,
|
|
1324
|
+
body: JSON.stringify(backendParams)
|
|
1325
|
+
}
|
|
1326
|
+
);
|
|
1327
|
+
if (!response2.ok) {
|
|
1328
|
+
const error = await response2.json();
|
|
1329
|
+
throw new Error(error.error || "Stream request failed");
|
|
1330
|
+
}
|
|
1331
|
+
return this.parseSSEStream(response2, params.model);
|
|
1332
|
+
}
|
|
1333
|
+
const response = await this.http.post(
|
|
1334
|
+
"/api/ai/chat/completion",
|
|
1335
|
+
backendParams
|
|
1336
|
+
);
|
|
1337
|
+
const content = response.text || "";
|
|
1338
|
+
return {
|
|
1339
|
+
id: `chatcmpl-${Date.now()}`,
|
|
1340
|
+
object: "chat.completion",
|
|
1341
|
+
created: Math.floor(Date.now() / 1e3),
|
|
1342
|
+
model: response.metadata?.model,
|
|
1343
|
+
choices: [
|
|
1344
|
+
{
|
|
1345
|
+
index: 0,
|
|
1346
|
+
message: {
|
|
1347
|
+
role: "assistant",
|
|
1348
|
+
content
|
|
1349
|
+
},
|
|
1350
|
+
finish_reason: "stop"
|
|
1351
|
+
}
|
|
1352
|
+
],
|
|
1353
|
+
usage: response.metadata?.usage || {
|
|
1354
|
+
prompt_tokens: 0,
|
|
1355
|
+
completion_tokens: 0,
|
|
1356
|
+
total_tokens: 0
|
|
1357
|
+
}
|
|
1358
|
+
};
|
|
1359
|
+
}
|
|
1360
|
+
/**
|
|
1361
|
+
* Parse SSE stream into async iterable of OpenAI-like chunks
|
|
1362
|
+
*/
|
|
1363
|
+
async *parseSSEStream(response, model) {
|
|
1364
|
+
const reader = response.body.getReader();
|
|
1365
|
+
const decoder = new TextDecoder();
|
|
1366
|
+
let buffer = "";
|
|
1367
|
+
try {
|
|
1368
|
+
while (true) {
|
|
1369
|
+
const { done, value } = await reader.read();
|
|
1370
|
+
if (done) break;
|
|
1371
|
+
buffer += decoder.decode(value, { stream: true });
|
|
1372
|
+
const lines = buffer.split("\n");
|
|
1373
|
+
buffer = lines.pop() || "";
|
|
1374
|
+
for (const line of lines) {
|
|
1375
|
+
if (line.startsWith("data: ")) {
|
|
1376
|
+
const dataStr = line.slice(6).trim();
|
|
1377
|
+
if (dataStr) {
|
|
1378
|
+
try {
|
|
1379
|
+
const data = JSON.parse(dataStr);
|
|
1380
|
+
if (data.chunk || data.content) {
|
|
1381
|
+
yield {
|
|
1382
|
+
id: `chatcmpl-${Date.now()}`,
|
|
1383
|
+
object: "chat.completion.chunk",
|
|
1384
|
+
created: Math.floor(Date.now() / 1e3),
|
|
1385
|
+
model,
|
|
1386
|
+
choices: [
|
|
1387
|
+
{
|
|
1388
|
+
index: 0,
|
|
1389
|
+
delta: {
|
|
1390
|
+
content: data.chunk || data.content
|
|
1391
|
+
},
|
|
1392
|
+
finish_reason: data.done ? "stop" : null
|
|
1393
|
+
}
|
|
1394
|
+
]
|
|
1395
|
+
};
|
|
1396
|
+
}
|
|
1397
|
+
if (data.done) {
|
|
1398
|
+
reader.releaseLock();
|
|
1399
|
+
return;
|
|
1400
|
+
}
|
|
1401
|
+
} catch (e) {
|
|
1402
|
+
console.warn("Failed to parse SSE data:", dataStr);
|
|
1403
|
+
}
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
} finally {
|
|
1409
|
+
reader.releaseLock();
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
};
|
|
1413
|
+
var Images = class {
|
|
1414
|
+
constructor(http) {
|
|
1415
|
+
this.http = http;
|
|
1416
|
+
}
|
|
1417
|
+
/**
|
|
1418
|
+
* Generate images - OpenAI-like response format
|
|
1419
|
+
*
|
|
1420
|
+
* @example
|
|
1421
|
+
* ```typescript
|
|
1422
|
+
* // Text-to-image
|
|
1423
|
+
* const response = await client.ai.images.generate({
|
|
1424
|
+
* model: 'dall-e-3',
|
|
1425
|
+
* prompt: 'A sunset over mountains',
|
|
1426
|
+
* });
|
|
1427
|
+
* console.log(response.images[0].url);
|
|
1428
|
+
*
|
|
1429
|
+
* // Image-to-image (with input images)
|
|
1430
|
+
* const response = await client.ai.images.generate({
|
|
1431
|
+
* model: 'stable-diffusion-xl',
|
|
1432
|
+
* prompt: 'Transform this into a watercolor painting',
|
|
1433
|
+
* images: [
|
|
1434
|
+
* { url: 'https://example.com/input.jpg' },
|
|
1435
|
+
* // or base64-encoded Data URI:
|
|
1436
|
+
* { url: 'data:image/jpeg;base64,/9j/4AAQ...' }
|
|
1437
|
+
* ]
|
|
1438
|
+
* });
|
|
1439
|
+
* ```
|
|
1440
|
+
*/
|
|
1441
|
+
async generate(params) {
|
|
1442
|
+
const response = await this.http.post(
|
|
1443
|
+
"/api/ai/image/generation",
|
|
1444
|
+
params
|
|
1445
|
+
);
|
|
1446
|
+
let data = [];
|
|
1447
|
+
if (response.images && response.images.length > 0) {
|
|
1448
|
+
data = response.images.map((img) => ({
|
|
1449
|
+
b64_json: img.imageUrl.replace(/^data:image\/\w+;base64,/, ""),
|
|
1450
|
+
content: response.text
|
|
1451
|
+
}));
|
|
1452
|
+
} else if (response.text) {
|
|
1453
|
+
data = [{ content: response.text }];
|
|
1454
|
+
}
|
|
1455
|
+
return {
|
|
1456
|
+
created: Math.floor(Date.now() / 1e3),
|
|
1457
|
+
data,
|
|
1458
|
+
...response.metadata?.usage && {
|
|
1459
|
+
usage: {
|
|
1460
|
+
total_tokens: response.metadata.usage.totalTokens || 0,
|
|
1461
|
+
input_tokens: response.metadata.usage.promptTokens || 0,
|
|
1462
|
+
output_tokens: response.metadata.usage.completionTokens || 0
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
};
|
|
1466
|
+
}
|
|
1467
|
+
};
|
|
1468
|
+
|
|
1469
|
+
// src/modules/functions.ts
|
|
1470
|
+
var Functions = class {
|
|
1471
|
+
constructor(http) {
|
|
1472
|
+
this.http = http;
|
|
1473
|
+
}
|
|
1474
|
+
/**
|
|
1475
|
+
* Invokes an Edge Function
|
|
1476
|
+
* @param slug The function slug to invoke
|
|
1477
|
+
* @param options Request options
|
|
1478
|
+
*/
|
|
1479
|
+
async invoke(slug, options = {}) {
|
|
1480
|
+
try {
|
|
1481
|
+
const { method = "POST", body, headers = {} } = options;
|
|
1482
|
+
const path = `/functions/${slug}`;
|
|
1483
|
+
const data = await this.http.request(
|
|
1484
|
+
method,
|
|
1485
|
+
path,
|
|
1486
|
+
{ body, headers }
|
|
1487
|
+
);
|
|
1488
|
+
return { data, error: null };
|
|
1489
|
+
} catch (error) {
|
|
1490
|
+
return {
|
|
1491
|
+
data: null,
|
|
1492
|
+
error
|
|
1493
|
+
// Pass through the full error object with all properties
|
|
1494
|
+
};
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
};
|
|
1498
|
+
|
|
1499
|
+
// src/modules/realtime.ts
|
|
1500
|
+
var import_socket = require("socket.io-client");
|
|
1501
|
+
var CONNECT_TIMEOUT = 1e4;
|
|
1502
|
+
var Realtime = class {
|
|
1503
|
+
constructor(baseUrl, tokenManager) {
|
|
1504
|
+
this.socket = null;
|
|
1505
|
+
this.connectPromise = null;
|
|
1506
|
+
this.subscribedChannels = /* @__PURE__ */ new Set();
|
|
1507
|
+
this.eventListeners = /* @__PURE__ */ new Map();
|
|
1508
|
+
this.baseUrl = baseUrl;
|
|
1509
|
+
this.tokenManager = tokenManager;
|
|
1510
|
+
}
|
|
1511
|
+
notifyListeners(event, payload) {
|
|
1512
|
+
const listeners = this.eventListeners.get(event);
|
|
1513
|
+
if (!listeners) return;
|
|
1514
|
+
for (const cb of listeners) {
|
|
1515
|
+
try {
|
|
1516
|
+
cb(payload);
|
|
1517
|
+
} catch (err) {
|
|
1518
|
+
console.error(`Error in ${event} callback:`, err);
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
/**
|
|
1523
|
+
* Connect to the realtime server
|
|
1524
|
+
* @returns Promise that resolves when connected
|
|
1525
|
+
*/
|
|
1526
|
+
connect() {
|
|
1527
|
+
if (this.socket?.connected) {
|
|
1528
|
+
return Promise.resolve();
|
|
1529
|
+
}
|
|
1530
|
+
if (this.connectPromise) {
|
|
1531
|
+
return this.connectPromise;
|
|
1532
|
+
}
|
|
1533
|
+
this.connectPromise = new Promise((resolve, reject) => {
|
|
1534
|
+
const session = this.tokenManager.getSession();
|
|
1535
|
+
const token = session?.accessToken;
|
|
1536
|
+
this.socket = (0, import_socket.io)(this.baseUrl, {
|
|
1537
|
+
transports: ["websocket"],
|
|
1538
|
+
auth: token ? { token } : void 0
|
|
1539
|
+
});
|
|
1540
|
+
let initialConnection = true;
|
|
1541
|
+
let timeoutId = null;
|
|
1542
|
+
const cleanup = () => {
|
|
1543
|
+
if (timeoutId) {
|
|
1544
|
+
clearTimeout(timeoutId);
|
|
1545
|
+
timeoutId = null;
|
|
1546
|
+
}
|
|
1547
|
+
};
|
|
1548
|
+
timeoutId = setTimeout(() => {
|
|
1549
|
+
if (initialConnection) {
|
|
1550
|
+
initialConnection = false;
|
|
1551
|
+
this.connectPromise = null;
|
|
1552
|
+
this.socket?.disconnect();
|
|
1553
|
+
this.socket = null;
|
|
1554
|
+
reject(new Error(`Connection timeout after ${CONNECT_TIMEOUT}ms`));
|
|
1555
|
+
}
|
|
1556
|
+
}, CONNECT_TIMEOUT);
|
|
1557
|
+
this.socket.on("connect", () => {
|
|
1558
|
+
cleanup();
|
|
1559
|
+
for (const channel of this.subscribedChannels) {
|
|
1560
|
+
this.socket.emit("realtime:subscribe", { channel });
|
|
1561
|
+
}
|
|
1562
|
+
this.notifyListeners("connect");
|
|
1563
|
+
if (initialConnection) {
|
|
1564
|
+
initialConnection = false;
|
|
1565
|
+
this.connectPromise = null;
|
|
1566
|
+
resolve();
|
|
1567
|
+
}
|
|
1568
|
+
});
|
|
1569
|
+
this.socket.on("connect_error", (error) => {
|
|
1570
|
+
cleanup();
|
|
1571
|
+
this.notifyListeners("connect_error", error);
|
|
1572
|
+
if (initialConnection) {
|
|
1573
|
+
initialConnection = false;
|
|
1574
|
+
this.connectPromise = null;
|
|
1575
|
+
reject(error);
|
|
1576
|
+
}
|
|
1577
|
+
});
|
|
1578
|
+
this.socket.on("disconnect", (reason) => {
|
|
1579
|
+
this.notifyListeners("disconnect", reason);
|
|
1580
|
+
});
|
|
1581
|
+
this.socket.on("realtime:error", (error) => {
|
|
1582
|
+
this.notifyListeners("error", error);
|
|
1583
|
+
});
|
|
1584
|
+
this.socket.onAny((event, message) => {
|
|
1585
|
+
if (event === "realtime:error") return;
|
|
1586
|
+
this.notifyListeners(event, message);
|
|
1587
|
+
});
|
|
1588
|
+
});
|
|
1589
|
+
return this.connectPromise;
|
|
1590
|
+
}
|
|
1591
|
+
/**
|
|
1592
|
+
* Disconnect from the realtime server
|
|
1593
|
+
*/
|
|
1594
|
+
disconnect() {
|
|
1595
|
+
if (this.socket) {
|
|
1596
|
+
this.socket.disconnect();
|
|
1597
|
+
this.socket = null;
|
|
1598
|
+
}
|
|
1599
|
+
this.subscribedChannels.clear();
|
|
1600
|
+
}
|
|
1601
|
+
/**
|
|
1602
|
+
* Check if connected to the realtime server
|
|
1603
|
+
*/
|
|
1604
|
+
get isConnected() {
|
|
1605
|
+
return this.socket?.connected ?? false;
|
|
1606
|
+
}
|
|
1607
|
+
/**
|
|
1608
|
+
* Get the current connection state
|
|
1609
|
+
*/
|
|
1610
|
+
get connectionState() {
|
|
1611
|
+
if (!this.socket) return "disconnected";
|
|
1612
|
+
if (this.socket.connected) return "connected";
|
|
1613
|
+
return "connecting";
|
|
1614
|
+
}
|
|
1615
|
+
/**
|
|
1616
|
+
* Get the socket ID (if connected)
|
|
1617
|
+
*/
|
|
1618
|
+
get socketId() {
|
|
1619
|
+
return this.socket?.id;
|
|
1620
|
+
}
|
|
1621
|
+
/**
|
|
1622
|
+
* Subscribe to a channel
|
|
1623
|
+
*
|
|
1624
|
+
* Automatically connects if not already connected.
|
|
1625
|
+
*
|
|
1626
|
+
* @param channel - Channel name (e.g., 'orders:123', 'broadcast')
|
|
1627
|
+
* @returns Promise with the subscription response
|
|
1628
|
+
*/
|
|
1629
|
+
async subscribe(channel) {
|
|
1630
|
+
if (this.subscribedChannels.has(channel)) {
|
|
1631
|
+
return { ok: true, channel };
|
|
1632
|
+
}
|
|
1633
|
+
if (!this.socket?.connected) {
|
|
1634
|
+
try {
|
|
1635
|
+
await this.connect();
|
|
1636
|
+
} catch (error) {
|
|
1637
|
+
const message = error instanceof Error ? error.message : "Connection failed";
|
|
1638
|
+
return { ok: false, channel, error: { code: "CONNECTION_FAILED", message } };
|
|
1639
|
+
}
|
|
1640
|
+
}
|
|
1641
|
+
return new Promise((resolve) => {
|
|
1642
|
+
this.socket.emit("realtime:subscribe", { channel }, (response) => {
|
|
1643
|
+
if (response.ok) {
|
|
1644
|
+
this.subscribedChannels.add(channel);
|
|
1645
|
+
}
|
|
1646
|
+
resolve(response);
|
|
1647
|
+
});
|
|
1648
|
+
});
|
|
1649
|
+
}
|
|
1650
|
+
/**
|
|
1651
|
+
* Unsubscribe from a channel (fire-and-forget)
|
|
1652
|
+
*
|
|
1653
|
+
* @param channel - Channel name to unsubscribe from
|
|
1654
|
+
*/
|
|
1655
|
+
unsubscribe(channel) {
|
|
1656
|
+
this.subscribedChannels.delete(channel);
|
|
1657
|
+
if (this.socket?.connected) {
|
|
1658
|
+
this.socket.emit("realtime:unsubscribe", { channel });
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
/**
|
|
1662
|
+
* Publish a message to a channel
|
|
1663
|
+
*
|
|
1664
|
+
* @param channel - Channel name
|
|
1665
|
+
* @param event - Event name
|
|
1666
|
+
* @param payload - Message payload
|
|
1667
|
+
*/
|
|
1668
|
+
async publish(channel, event, payload) {
|
|
1669
|
+
if (!this.socket?.connected) {
|
|
1670
|
+
throw new Error("Not connected to realtime server. Call connect() first.");
|
|
1671
|
+
}
|
|
1672
|
+
this.socket.emit("realtime:publish", { channel, event, payload });
|
|
1673
|
+
}
|
|
1674
|
+
/**
|
|
1675
|
+
* Listen for events
|
|
1676
|
+
*
|
|
1677
|
+
* Reserved event names:
|
|
1678
|
+
* - 'connect' - Fired when connected to the server
|
|
1679
|
+
* - 'connect_error' - Fired when connection fails (payload: Error)
|
|
1680
|
+
* - 'disconnect' - Fired when disconnected (payload: reason string)
|
|
1681
|
+
* - 'error' - Fired when a realtime error occurs (payload: RealtimeErrorPayload)
|
|
1682
|
+
*
|
|
1683
|
+
* All other events receive a `SocketMessage` payload with metadata.
|
|
1684
|
+
*
|
|
1685
|
+
* @param event - Event name to listen for
|
|
1686
|
+
* @param callback - Callback function when event is received
|
|
1687
|
+
*/
|
|
1688
|
+
on(event, callback) {
|
|
1689
|
+
if (!this.eventListeners.has(event)) {
|
|
1690
|
+
this.eventListeners.set(event, /* @__PURE__ */ new Set());
|
|
1691
|
+
}
|
|
1692
|
+
this.eventListeners.get(event).add(callback);
|
|
1693
|
+
}
|
|
1694
|
+
/**
|
|
1695
|
+
* Remove a listener for a specific event
|
|
1696
|
+
*
|
|
1697
|
+
* @param event - Event name
|
|
1698
|
+
* @param callback - The callback function to remove
|
|
1699
|
+
*/
|
|
1700
|
+
off(event, callback) {
|
|
1701
|
+
const listeners = this.eventListeners.get(event);
|
|
1702
|
+
if (listeners) {
|
|
1703
|
+
listeners.delete(callback);
|
|
1704
|
+
if (listeners.size === 0) {
|
|
1705
|
+
this.eventListeners.delete(event);
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
/**
|
|
1710
|
+
* Listen for an event only once, then automatically remove the listener
|
|
1711
|
+
*
|
|
1712
|
+
* @param event - Event name to listen for
|
|
1713
|
+
* @param callback - Callback function when event is received
|
|
1714
|
+
*/
|
|
1715
|
+
once(event, callback) {
|
|
1716
|
+
const wrapper = (payload) => {
|
|
1717
|
+
this.off(event, wrapper);
|
|
1718
|
+
callback(payload);
|
|
1719
|
+
};
|
|
1720
|
+
this.on(event, wrapper);
|
|
1721
|
+
}
|
|
1722
|
+
/**
|
|
1723
|
+
* Get all currently subscribed channels
|
|
1724
|
+
*
|
|
1725
|
+
* @returns Array of channel names
|
|
1726
|
+
*/
|
|
1727
|
+
getSubscribedChannels() {
|
|
1728
|
+
return Array.from(this.subscribedChannels);
|
|
1729
|
+
}
|
|
1730
|
+
};
|
|
1731
|
+
|
|
1732
|
+
// src/modules/email.ts
|
|
1733
|
+
var Emails = class {
|
|
1734
|
+
constructor(http) {
|
|
1735
|
+
this.http = http;
|
|
1736
|
+
}
|
|
1737
|
+
/**
|
|
1738
|
+
* Send a custom HTML email
|
|
1739
|
+
* @param options Email options including recipients, subject, and HTML content
|
|
1740
|
+
*/
|
|
1741
|
+
async send(options) {
|
|
1742
|
+
try {
|
|
1743
|
+
const data = await this.http.post(
|
|
1744
|
+
"/api/email/send-raw",
|
|
1745
|
+
options
|
|
1746
|
+
);
|
|
1747
|
+
return { data, error: null };
|
|
1748
|
+
} catch (error) {
|
|
1749
|
+
const normalizedError = error instanceof Error ? error : new Error(String(error));
|
|
1750
|
+
return { data: null, error: normalizedError };
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
};
|
|
1754
|
+
|
|
1755
|
+
// src/client.ts
|
|
1756
|
+
var InsForgeClient = class {
|
|
1757
|
+
constructor(config = {}) {
|
|
1758
|
+
this.http = new HttpClient(config);
|
|
1759
|
+
this.tokenManager = new TokenManager(config.storage);
|
|
1760
|
+
if (config.edgeFunctionToken) {
|
|
1761
|
+
this.http.setAuthToken(config.edgeFunctionToken);
|
|
1762
|
+
this.tokenManager.saveSession({
|
|
1763
|
+
accessToken: config.edgeFunctionToken,
|
|
1764
|
+
user: {}
|
|
1765
|
+
// Will be populated by getCurrentUser()
|
|
1766
|
+
});
|
|
1767
|
+
}
|
|
1768
|
+
const existingSession = this.tokenManager.getSession();
|
|
1769
|
+
if (existingSession?.accessToken) {
|
|
1770
|
+
this.http.setAuthToken(existingSession.accessToken);
|
|
1771
|
+
}
|
|
1772
|
+
this.auth = new Auth(this.http, this.tokenManager);
|
|
1773
|
+
this.database = new Database(this.http, this.tokenManager);
|
|
1774
|
+
this.storage = new Storage(this.http);
|
|
1775
|
+
this.ai = new AI(this.http);
|
|
1776
|
+
this.functions = new Functions(this.http);
|
|
1777
|
+
this.realtime = new Realtime(this.http.baseUrl, this.tokenManager);
|
|
1778
|
+
this.emails = new Emails(this.http);
|
|
1779
|
+
}
|
|
1780
|
+
/**
|
|
1781
|
+
* Get the underlying HTTP client for custom requests
|
|
1782
|
+
*
|
|
1783
|
+
* @example
|
|
1784
|
+
* ```typescript
|
|
1785
|
+
* const httpClient = client.getHttpClient();
|
|
1786
|
+
* const customData = await httpClient.get('/api/custom-endpoint');
|
|
1787
|
+
* ```
|
|
1788
|
+
*/
|
|
1789
|
+
getHttpClient() {
|
|
1790
|
+
return this.http;
|
|
1791
|
+
}
|
|
1792
|
+
/**
|
|
1793
|
+
* Future modules will be added here:
|
|
1794
|
+
* - database: Database operations
|
|
1795
|
+
* - storage: File storage operations
|
|
1796
|
+
* - functions: Serverless functions
|
|
1797
|
+
* - tables: Table management
|
|
1798
|
+
* - metadata: Backend metadata
|
|
1799
|
+
*/
|
|
1800
|
+
};
|
|
1801
|
+
|
|
1802
|
+
// src/index.ts
|
|
1803
|
+
function createClient(config) {
|
|
1804
|
+
return new InsForgeClient(config);
|
|
1805
|
+
}
|
|
1806
|
+
var index_default = InsForgeClient;
|
|
1807
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1808
|
+
0 && (module.exports = {
|
|
1809
|
+
AI,
|
|
1810
|
+
Auth,
|
|
1811
|
+
Database,
|
|
1812
|
+
Emails,
|
|
1813
|
+
Functions,
|
|
1814
|
+
HttpClient,
|
|
1815
|
+
InsForgeClient,
|
|
1816
|
+
InsForgeError,
|
|
1817
|
+
Realtime,
|
|
1818
|
+
Storage,
|
|
1819
|
+
StorageBucket,
|
|
1820
|
+
TokenManager,
|
|
1821
|
+
createClient
|
|
1822
|
+
});
|
|
1823
|
+
//# sourceMappingURL=index.js.map
|