@fayz-ai/core 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/access/index.js.map +1 -1
- package/dist/chunk-BEGXYHS4.js +566 -0
- package/dist/chunk-BEGXYHS4.js.map +1 -0
- package/dist/chunk-ED6NBH6U.js +348 -0
- package/dist/chunk-ED6NBH6U.js.map +1 -0
- package/dist/chunk-EWKX4VUM.js +429 -0
- package/dist/chunk-EWKX4VUM.js.map +1 -0
- package/dist/chunk-LARZWDHA.js +319 -0
- package/dist/chunk-LARZWDHA.js.map +1 -0
- package/dist/chunk-OXQGRJZT.js +125 -0
- package/dist/chunk-OXQGRJZT.js.map +1 -0
- package/dist/chunk-RRYFXUQX.js +1247 -0
- package/dist/chunk-RRYFXUQX.js.map +1 -0
- package/dist/{chunk-5RJVUC6J.js → chunk-TDI6F6PT.js} +373 -25
- package/dist/chunk-TDI6F6PT.js.map +1 -0
- package/dist/{chunk-V2MSAUHO.js → chunk-UVKH6RDX.js} +211 -335
- package/dist/chunk-UVKH6RDX.js.map +1 -0
- package/dist/chunk-V53GR4UT.js +289 -0
- package/dist/chunk-V53GR4UT.js.map +1 -0
- package/dist/connector-runtime/index.d.ts +15 -0
- package/dist/connector-runtime/index.d.ts.map +1 -0
- package/dist/connector-runtime/index.js +3 -0
- package/dist/connector-runtime/index.js.map +1 -0
- package/dist/data/archetype.d.ts.map +1 -1
- package/dist/data/backend-env.d.ts +38 -0
- package/dist/data/backend-env.d.ts.map +1 -0
- package/dist/data/bulk.d.ts +24 -0
- package/dist/data/bulk.d.ts.map +1 -1
- package/dist/data/cached.d.ts.map +1 -1
- package/dist/data/custom-fields.d.ts +5 -0
- package/dist/data/custom-fields.d.ts.map +1 -0
- package/dist/data/index.d.ts +2 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +3 -1
- package/dist/data/mock.d.ts.map +1 -1
- package/dist/data/platform-api.d.ts.map +1 -1
- package/dist/data/resolve.d.ts.map +1 -1
- package/dist/data/supabase.d.ts.map +1 -1
- package/dist/data/types.d.ts +8 -0
- package/dist/data/types.d.ts.map +1 -1
- package/dist/entity/events.d.ts +14 -0
- package/dist/entity/events.d.ts.map +1 -0
- package/dist/events/envelope.d.ts +31 -0
- package/dist/events/envelope.d.ts.map +1 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/log.d.ts +44 -0
- package/dist/events/log.d.ts.map +1 -0
- package/dist/events/types.d.ts +40 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/fields/store.d.ts +45 -0
- package/dist/fields/store.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +10 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/shell-translations.en.d.ts.map +1 -1
- package/dist/i18n/shell-translations.pt-br.d.ts.map +1 -1
- package/dist/index.d.ts +45 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +543 -56
- package/dist/index.js.map +1 -1
- package/dist/integrations/events.d.ts +7 -0
- package/dist/integrations/events.d.ts.map +1 -0
- package/dist/integrations/index.d.ts +533 -29
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +3 -1
- package/dist/integrations/permissions.d.ts +132 -0
- package/dist/integrations/permissions.d.ts.map +1 -0
- package/dist/integrations/request.d.ts +170 -0
- package/dist/integrations/request.d.ts.map +1 -0
- package/dist/integrations/runtime-token.d.ts +33 -0
- package/dist/integrations/runtime-token.d.ts.map +1 -0
- package/dist/integrations/runtime.d.ts +398 -0
- package/dist/integrations/runtime.d.ts.map +1 -0
- package/dist/integrations/settings.d.ts +102 -0
- package/dist/integrations/settings.d.ts.map +1 -0
- package/dist/integrations/store.d.ts +145 -0
- package/dist/integrations/store.d.ts.map +1 -0
- package/dist/{address/index.d.ts → lib/address.d.ts} +1 -1
- package/dist/{address/index.d.ts.map → lib/address.d.ts.map} +1 -1
- package/dist/{phone/index.d.ts → lib/phone.d.ts} +1 -1
- package/dist/lib/phone.d.ts.map +1 -0
- package/dist/{seo/index.d.ts → lib/seo.d.ts} +18 -1
- package/dist/lib/seo.d.ts.map +1 -0
- package/dist/{tenant/index.d.ts → lib/tenant.d.ts} +1 -1
- package/dist/lib/tenant.d.ts.map +1 -0
- package/dist/manifest/index.d.ts +1 -1
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/messaging/index.d.ts +3 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/registry.d.ts +35 -0
- package/dist/messaging/registry.d.ts.map +1 -0
- package/dist/messaging/types.d.ts +67 -0
- package/dist/messaging/types.d.ts.map +1 -0
- package/dist/plugin/index.js +3 -1
- package/dist/plugin/runtime.d.ts +17 -0
- package/dist/plugin/runtime.d.ts.map +1 -1
- package/dist/registry/block-catalog.d.ts +78 -0
- package/dist/registry/block-catalog.d.ts.map +1 -0
- package/dist/registry/block-constraints.d.ts +64 -0
- package/dist/registry/block-constraints.d.ts.map +1 -0
- package/dist/registry/block-schema.d.ts +69 -0
- package/dist/registry/block-schema.d.ts.map +1 -0
- package/dist/registry/blocks.d.ts +84 -0
- package/dist/registry/blocks.d.ts.map +1 -0
- package/dist/registry/entities.d.ts +179 -0
- package/dist/registry/entities.d.ts.map +1 -0
- package/dist/registry/extension-points.d.ts +117 -0
- package/dist/registry/extension-points.d.ts.map +1 -0
- package/dist/registry/handles.d.ts +41 -0
- package/dist/registry/handles.d.ts.map +1 -0
- package/dist/registry/index.d.ts +41 -41
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/loaders.d.ts +55 -0
- package/dist/registry/loaders.d.ts.map +1 -0
- package/dist/registry/registry-class.d.ts +157 -0
- package/dist/registry/registry-class.d.ts.map +1 -0
- package/dist/registry/schema-check.d.ts +14 -0
- package/dist/registry/schema-check.d.ts.map +1 -0
- package/dist/router/index.d.ts +78 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +1 -1
- package/dist/{shell-translations.pt-br-2GWRQRRP.js → shell-translations.pt-br-BM5ZFSKJ.js} +72 -3
- package/dist/shell-translations.pt-br-BM5ZFSKJ.js.map +1 -0
- package/dist/telemetry/errors.d.ts +87 -0
- package/dist/telemetry/errors.d.ts.map +1 -0
- package/dist/testing/index.js +4 -1
- package/dist/{testing/index.d.ts → testing.d.ts} +5 -3
- package/dist/testing.d.ts.map +1 -0
- package/dist/types/analytics.d.ts +213 -0
- package/dist/types/analytics.d.ts.map +1 -0
- package/dist/types/crud.d.ts +37 -3
- package/dist/types/crud.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +138 -1
- package/dist/types/plugins.d.ts.map +1 -1
- package/package.json +9 -17
- package/dist/blocks/index.d.ts +0 -25
- package/dist/blocks/index.d.ts.map +0 -1
- package/dist/chunk-5RJVUC6J.js.map +0 -1
- package/dist/chunk-L4TLMYGC.js +0 -42
- package/dist/chunk-L4TLMYGC.js.map +0 -1
- package/dist/chunk-V2MSAUHO.js.map +0 -1
- package/dist/chunk-X5THHG6T.js +0 -77
- package/dist/chunk-X5THHG6T.js.map +0 -1
- package/dist/chunk-Y2C2FBQP.js +0 -35
- package/dist/chunk-Y2C2FBQP.js.map +0 -1
- package/dist/chunk-YH25Y4FW.js +0 -311
- package/dist/chunk-YH25Y4FW.js.map +0 -1
- package/dist/phone/index.d.ts.map +0 -1
- package/dist/seo/index.d.ts.map +0 -1
- package/dist/shell-translations.pt-br-2GWRQRRP.js.map +0 -1
- package/dist/tenant/index.d.ts.map +0 -1
- package/dist/testing/index.d.ts.map +0 -1
- package/src/access/denial.ts +0 -33
- package/src/access/engine.test.ts +0 -48
- package/src/access/engine.ts +0 -136
- package/src/access/index.ts +0 -14
- package/src/access/limits.ts +0 -18
- package/src/address/index.ts +0 -188
- package/src/app/render.tsx +0 -69
- package/src/blocks/index.tsx +0 -68
- package/src/data/archetype.ts +0 -255
- package/src/data/bulk.ts +0 -35
- package/src/data/cached.ts +0 -55
- package/src/data/count.test.ts +0 -152
- package/src/data/count.ts +0 -131
- package/src/data/filters.test.ts +0 -70
- package/src/data/filters.ts +0 -90
- package/src/data/index.ts +0 -11
- package/src/data/mock.ts +0 -90
- package/src/data/platform-api.ts +0 -209
- package/src/data/refresh.ts +0 -115
- package/src/data/resolve.ts +0 -126
- package/src/data/supabase.ts +0 -230
- package/src/data/types.ts +0 -50
- package/src/entity/index.ts +0 -2
- package/src/entity/registry.ts +0 -49
- package/src/events/index.tsx +0 -82
- package/src/i18n/index.ts +0 -476
- package/src/i18n/shell-translations.en.ts +0 -875
- package/src/i18n/shell-translations.pt-br.ts +0 -873
- package/src/index.ts +0 -217
- package/src/integrations/index.ts +0 -237
- package/src/lib/cache.ts +0 -118
- package/src/lib/csv.ts +0 -54
- package/src/lib/format.ts +0 -58
- package/src/manifest/app-manifest.schema.json +0 -676
- package/src/manifest/index.ts +0 -518
- package/src/manifest/serialize.ts +0 -52
- package/src/phone/index.ts +0 -85
- package/src/plugin/createSafeDataProvider.ts +0 -30
- package/src/plugin/index.ts +0 -1
- package/src/plugin/runtime.ts +0 -331
- package/src/registry/index.ts +0 -163
- package/src/router/history.ts +0 -86
- package/src/router/index.ts +0 -29
- package/src/runtime/index.ts +0 -15
- package/src/runtime/oauth.ts +0 -219
- package/src/search/engine.ts +0 -559
- package/src/search/index.ts +0 -25
- package/src/search/text.ts +0 -206
- package/src/search/types.ts +0 -75
- package/src/seo/index.ts +0 -128
- package/src/tenant/index.ts +0 -38
- package/src/testing/index.ts +0 -116
- package/src/types/auth.ts +0 -41
- package/src/types/billing.ts +0 -39
- package/src/types/crud.ts +0 -184
- package/src/types/entities.ts +0 -142
- package/src/types/entitlements.ts +0 -45
- package/src/types/i18n.ts +0 -7
- package/src/types/index.ts +0 -11
- package/src/types/org.ts +0 -137
- package/src/types/payment.ts +0 -44
- package/src/types/permissions.ts +0 -32
- package/src/types/plugins.ts +0 -480
- package/src/types/theme.ts +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/router/index.ts"],"names":[],"mappings":"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","file":"chunk-OXQGRJZT.js","sourcesContent":["// ---------------------------------------------------------------------------\n// Router adapters — the seam between SDK surfaces (storefront, portal, admin)\n// and however the host app addresses pages.\n//\n// A surface never reads `window.location` directly; it asks the adapter. That\n// is what lets the same components render under a hash SPA (the historical\n// default), a real-URL SPA, and a server render where there is no `window` at\n// all. `href()` is part of the contract for exactly this reason: a link's shape\n// is a property of the addressing scheme, not of the component drawing it, so\n// `<Link>` never branches on which adapter is active.\n// ---------------------------------------------------------------------------\n\nexport interface RouterAdapter {\n /** Move to `to` ('/product/x'). No-op where navigation is not possible (SSR). */\n navigate(to: string): void\n /**\n * Move to `to` without adding a history entry — for state that lives in the\n * URL (catalogue filters, sort) where every keystroke must not become a\n * \"back\" step. No-op under SSR.\n */\n replace(to: string): void\n /** Current in-app path, always leading-slash, never including the origin. */\n getCurrentPath(): string\n /** Subscribe to path changes. Returns an unsubscribe fn. */\n onPathChange(cb: (path: string) => void): () => void\n /**\n * The `href` an anchor to `to` should carry. Hash routing needs the '#'\n * prefix; real-URL routing passes the path through untouched.\n */\n href(to: string): string\n /**\n * Whether a plain left-click on an in-app anchor must be intercepted and\n * routed in-page. False for hash routing, where the browser already handles\n * fragment navigation natively without a document load.\n */\n readonly interceptsLinkClicks: boolean\n}\n\nfunction normalize(path: string): string {\n if (!path) return '/'\n return path.startsWith('/') ? path : `/${path}`\n}\n\n/**\n * Fragment addressing (`example.com/#/product/x`). The historical SDK default.\n *\n * Deliberately kept as-is: every shipped app addresses pages this way, and the\n * fragment survives static hosting with no server rewrite rules. Its cost is\n * that the fragment never reaches the server, so a hash-addressed page can be\n * neither server-rendered nor indexed as a distinct URL — use\n * `historyRouterAdapter` when either matters.\n */\nexport function hashRouterAdapter(): RouterAdapter {\n return {\n navigate(to) { window.location.hash = to },\n replace(to) { window.history.replaceState(null, '', `#${normalize(to)}`) },\n getCurrentPath() { return window.location.hash.slice(1) || '/' },\n onPathChange(cb) {\n const handler = () => cb(window.location.hash.slice(1) || '/')\n window.addEventListener('hashchange', handler)\n return () => window.removeEventListener('hashchange', handler)\n },\n href(to) { return `#${normalize(to)}` },\n interceptsLinkClicks: false,\n }\n}\n\n/**\n * Real-URL addressing (`example.com/product/x`) over the History API.\n *\n * `history.pushState` does NOT emit `popstate` (HTML spec), so a subscriber\n * list is the only way programmatic navigation can notify renderers — an\n * adapter that only listens for `popstate` silently changes the URL without\n * re-rendering. Back/forward still arrive via `popstate` and are fanned out to\n * the same subscribers.\n *\n * Requires the host to serve the app shell for unknown paths (SPA fallback);\n * without it a deep link 404s before the adapter ever runs.\n */\nexport function historyRouterAdapter(): RouterAdapter {\n const subscribers = new Set<(path: string) => void>()\n let popstateBound = false\n\n const currentPath = () => window.location.pathname + window.location.search\n const emit = () => { for (const cb of subscribers) cb(currentPath()) }\n\n return {\n navigate(to) {\n const next = normalize(to)\n if (next === currentPath()) return\n window.history.pushState(null, '', next)\n emit()\n },\n replace(to) {\n const next = normalize(to)\n if (next === currentPath()) return\n window.history.replaceState(null, '', next)\n emit()\n },\n getCurrentPath() { return currentPath() },\n onPathChange(cb) {\n subscribers.add(cb)\n if (!popstateBound) {\n window.addEventListener('popstate', emit)\n popstateBound = true\n }\n return () => {\n subscribers.delete(cb)\n if (subscribers.size === 0 && popstateBound) {\n window.removeEventListener('popstate', emit)\n popstateBound = false\n }\n }\n },\n href(to) { return normalize(to) },\n interceptsLinkClicks: true,\n }\n}\n\n/**\n * A fixed path with no browser behind it — the server half of a render.\n *\n * Every method is total: `navigate` is a no-op and `onPathChange` never fires,\n * so a component that navigates during render degrades to \"nothing happened\"\n * instead of throwing. Anchors still render real, crawlable hrefs, which is the\n * whole point of rendering server-side.\n */\nexport function staticRouterAdapter(\n path: string,\n options: {\n /**\n * How to write an anchor's href. Defaults to the path verbatim — real URLs,\n * which is the reason to render statically at all. A caller rendering a\n * store that is *served* as a hash SPA passes that scheme's writer instead,\n * because the addressing scheme is a property of how the store is served,\n * not of whether this particular render happens to be headless.\n */\n href?: (to: string) => string\n } = {},\n): RouterAdapter {\n const fixed = normalize(path)\n const writeHref = options.href ?? ((to: string) => normalize(to))\n return {\n navigate() {},\n replace() {},\n getCurrentPath() { return fixed },\n onPathChange() { return () => {} },\n href(to) { return writeHref(to) },\n interceptsLinkClicks: true,\n }\n}\n\n/**\n * Bridge any host router (TanStack Router, React Router, Next) into the SDK.\n * The host stays the single source of truth for history; the SDK only reads.\n */\nexport function hostRouterAdapter(host: {\n navigate: (to: string) => void\n /** Falls back to `navigate` when the host draws no push/replace distinction. */\n replace?: (to: string) => void\n currentPath: () => string\n subscribe?: (cb: (path: string) => void) => () => void\n}): RouterAdapter {\n return {\n navigate(to) { host.navigate(normalize(to)) },\n replace(to) { (host.replace ?? host.navigate)(normalize(to)) },\n getCurrentPath() { return normalize(host.currentPath()) },\n onPathChange(cb) { return host.subscribe?.(cb) ?? (() => {}) },\n href(to) { return normalize(to) },\n interceptsLinkClicks: true,\n }\n}\n\n/**\n * The adapter that fits the current environment: static during SSR (no\n * `window`), otherwise the caller's choice of addressing scheme.\n */\nexport function defaultRouterAdapter(\n scheme: 'hash' | 'history' = 'hash',\n ssrPath = '/',\n): RouterAdapter {\n if (typeof window !== 'undefined') {\n return scheme === 'history' ? historyRouterAdapter() : hashRouterAdapter()\n }\n // No window: a static adapter, but still writing hrefs in the requested\n // scheme. Dropping the scheme here would make a headless render of a\n // hash-served store emit `/x` links that do not resolve — the render must\n // describe how the store is served, not how it happens to be rendered.\n return staticRouterAdapter(ssrPath, {\n href: scheme === 'hash' ? (to) => `#${normalize(to)}` : undefined,\n })\n}\n\n/** @deprecated Use `historyRouterAdapter()` — this one never notified on push. */\nexport const windowRouterAdapter = historyRouterAdapter\n"]}
|