@sanity/workbench 0.1.0-alpha.2 → 0.1.0-alpha.20

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.
Files changed (48) hide show
  1. package/README.md +24 -0
  2. package/dist/_chunks-es/index.js +39 -0
  3. package/dist/_chunks-es/index.js.map +1 -0
  4. package/dist/_chunks-es/studio.js +864 -0
  5. package/dist/_chunks-es/studio.js.map +1 -0
  6. package/dist/_internal.d.ts +16 -4
  7. package/dist/_internal.js +34 -26
  8. package/dist/_internal.js.map +1 -1
  9. package/dist/core.d.ts +2138 -0
  10. package/dist/core.js +75 -0
  11. package/dist/core.js.map +1 -0
  12. package/dist/system.d.ts +2120 -0
  13. package/dist/system.js +888 -0
  14. package/dist/system.js.map +1 -0
  15. package/package.json +33 -6
  16. package/src/_exports/core.ts +1 -0
  17. package/src/_exports/system.ts +1 -0
  18. package/src/_internal/index.ts +2 -1
  19. package/src/_internal/render.ts +72 -42
  20. package/src/core/applications/application-list.ts +104 -0
  21. package/src/core/applications/application.ts +174 -0
  22. package/src/core/canvases.ts +92 -0
  23. package/src/core/config.ts +34 -0
  24. package/src/core/env.ts +43 -0
  25. package/src/core/index.ts +13 -0
  26. package/src/core/log/index.ts +125 -0
  27. package/src/core/media-libraries.ts +93 -0
  28. package/src/core/organizations.ts +115 -0
  29. package/src/core/projects.ts +114 -0
  30. package/src/core/shared/urls.ts +129 -0
  31. package/src/core/user-applications/core-app.ts +148 -0
  32. package/src/core/user-applications/studios/index.ts +3 -0
  33. package/src/core/user-applications/studios/schemas.ts +128 -0
  34. package/src/core/user-applications/studios/studio.ts +533 -0
  35. package/src/core/user-applications/studios/workspace.ts +152 -0
  36. package/src/core/user-applications/user-application.ts +222 -0
  37. package/src/system/auth.machine.ts +223 -0
  38. package/src/system/index.ts +22 -0
  39. package/src/system/inspect.ts +40 -0
  40. package/src/system/load-federated-module.ts +54 -0
  41. package/src/system/remote.machine.ts +219 -0
  42. package/src/system/remotes.machine.ts +92 -0
  43. package/src/system/root.machine.ts +224 -0
  44. package/src/system/service.machine.ts +207 -0
  45. package/src/system/services.machine.ts +120 -0
  46. package/src/system/system-preferences.machine.ts +215 -0
  47. package/src/system/telemetry.machine.ts +179 -0
  48. package/src/_internal/render.test.ts +0 -18
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # @sanity/workbench
2
+
3
+ Workbench component for the Sanity Content Operating System. Provides the domain model, system state machines, and framework-agnostic host entry point for rendering the workbench shell.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ src/
9
+ core/ → Domain types: projects, organisations, applications, canvases, media libraries, config, logging
10
+ system/ → XState v5 machines: OS root, auth, telemetry, system preferences
11
+ _internal/ → Host-side render API (renderWorkbench)
12
+ ```
13
+
14
+ ### Entry points
15
+
16
+ | Import path | Purpose |
17
+ | ----------------------------- | --------------------------------------------------- |
18
+ | `@sanity/workbench/core` | Shared domain layer — Zod schemas and branded types |
19
+ | `@sanity/workbench/system` | State machines that drive the workbench runtime |
20
+ | `@sanity/workbench/_internal` | Framework-agnostic host entry point |
21
+
22
+ ## License
23
+
24
+ MIT
@@ -0,0 +1,39 @@
1
+ const LEVELS = ["none", "error", "warn", "info", "debug"];
2
+ function createLogger({
3
+ namespace,
4
+ context: baseContext,
5
+ logLevel = "info"
6
+ } = {}) {
7
+ function isLevelEnabled(level) {
8
+ return LEVELS.indexOf(level) <= LEVELS.indexOf(logLevel);
9
+ }
10
+ function logAtLevel(level, message, context) {
11
+ if (!isLevelEnabled(level)) return;
12
+ const merged = baseContext ?? context ? { ...baseContext, ...context } : void 0, args = [
13
+ ...namespace ? [`[${namespace}]`] : [],
14
+ message,
15
+ ...merged ? [merged] : []
16
+ ];
17
+ level === "error" ? console.error(...args) : level === "warn" ? console.warn(...args) : level === "info" ? console.info(...args) : console.debug(...args);
18
+ }
19
+ return {
20
+ error: (message, context) => logAtLevel("error", message, context),
21
+ warn: (message, context) => logAtLevel("warn", message, context),
22
+ info: (message, context) => logAtLevel("info", message, context),
23
+ debug: (message, context) => logAtLevel("debug", message, context),
24
+ child: (domain, context) => createLogger({
25
+ logLevel,
26
+ namespace: namespace ? `${namespace}:${domain}` : domain,
27
+ context: baseContext || context ? { ...baseContext, ...context } : void 0
28
+ })
29
+ };
30
+ }
31
+ const logger = createLogger({
32
+ namespace: "sanity-workbench",
33
+ logLevel: "debug"
34
+ });
35
+ export {
36
+ createLogger,
37
+ logger
38
+ };
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/core/log/index.ts"],"sourcesContent":["/**\n * Log levels in order of verbosity (least to most)\n * - none: Silent\n * - error: Critical failures that prevent operation\n * - warn: Issues that may cause problems but don't stop execution\n * - info: High-level informational messages (default)\n * - debug: Detailed debugging information (maintainer level)\n * - trace: Very detailed tracing — sets `internal: true` on context\n * @public\n */\nexport type LogLevel = \"none\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\n/**\n * Namespaces organize logs by functional domain.\n * @internal\n */\nexport type LogNamespace = string;\n\ntype LogContext = { [key: string]: unknown };\n\n/**\n * @public\n */\nexport interface Logger {\n error: (message: string, context?: LogContext) => void;\n warn: (message: string, context?: LogContext) => void;\n info: (message: string, context?: LogContext) => void;\n debug: (message: string, context?: LogContext) => void;\n child: (domain: string, context?: LogContext) => Logger;\n}\n\nconst LEVELS: readonly LogLevel[] = [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\ninterface LoggerOptions {\n namespace?: LogNamespace;\n context?: LogContext;\n logLevel?: LogLevel;\n}\n\n/**\n * Creates a leveled logger with an optional namespace prefix and bound\n * context. Calls below the configured `logLevel` are suppressed; `\"none\"`\n * silences the logger entirely.\n *\n * Use {@link Logger.child} to derive a sub-logger with an extended namespace\n * (e.g. `parent:domain`) that inherits the parent's level and merges its\n * bound context.\n *\n * @param options - Logger configuration.\n * @param options.namespace - Prepended to every message in `[brackets]`.\n * @param options.context - Bound context merged with per-call context.\n * Per-call keys win on conflict.\n * @param options.logLevel - Maximum verbosity to emit. Default `\"info\"`.\n *\n * @example\n * ```ts\n * const log = createLogger({ namespace: \"checkout\", logLevel: \"debug\" });\n * log.info(\"placed\", { orderId: \"abc\" });\n * // → [checkout] placed { orderId: \"abc\" }\n *\n * const auth = log.child(\"auth\", { tenant: \"acme\" });\n * auth.warn(\"token expiring\");\n * // → [checkout:auth] token expiring { tenant: \"acme\" }\n * ```\n *\n * @public\n */\nexport function createLogger({\n namespace,\n context: baseContext,\n logLevel = \"info\",\n}: LoggerOptions = {}): Logger {\n function isLevelEnabled(level: LogLevel): boolean {\n return LEVELS.indexOf(level) <= LEVELS.indexOf(logLevel);\n }\n\n function logAtLevel(\n level: LogLevel,\n message: string,\n context?: LogContext,\n ): void {\n if (!isLevelEnabled(level)) return;\n\n const merged =\n (baseContext ?? context) ? { ...baseContext, ...context } : undefined;\n const args: unknown[] = [\n ...(namespace ? [`[${namespace}]`] : []),\n message,\n ...(merged ? [merged] : []),\n ];\n\n if (level === \"error\") console.error(...args);\n else if (level === \"warn\") console.warn(...args);\n // oxlint-disable-next-line no-console\n else if (level === \"info\") console.info(...args);\n // oxlint-disable-next-line no-console\n else console.debug(...args);\n }\n\n return {\n error: (message, context) => logAtLevel(\"error\", message, context),\n warn: (message, context) => logAtLevel(\"warn\", message, context),\n info: (message, context) => logAtLevel(\"info\", message, context),\n debug: (message, context) => logAtLevel(\"debug\", message, context),\n child: (domain, context) =>\n createLogger({\n logLevel,\n namespace: namespace ? `${namespace}:${domain}` : domain,\n context:\n baseContext || context ? { ...baseContext, ...context } : undefined,\n }),\n };\n}\n\n/**\n * Shared workbench logger instance. Use this from both the workbench host\n * and its remotes so lifecycle and diagnostic logs appear under a single\n * namespace.\n *\n * @public\n */\nexport const logger: Logger = createLogger({\n namespace: \"sanity-workbench\",\n logLevel: \"debug\",\n});\n"],"names":[],"mappings":"AA+BA,MAAM,SAA8B,CAAC,QAAQ,SAAS,QAAQ,QAAQ,OAAO;AAoCtE,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,SAAS;AAAA,EACT,WAAW;AACb,IAAmB,IAAY;AAC7B,WAAS,eAAe,OAA0B;AAChD,WAAO,OAAO,QAAQ,KAAK,KAAK,OAAO,QAAQ,QAAQ;AAAA,EACzD;AAEA,WAAS,WACP,OACA,SACA,SACM;AACN,QAAI,CAAC,eAAe,KAAK,EAAG;AAE5B,UAAM,SACH,eAAe,UAAW,EAAE,GAAG,aAAa,GAAG,QAAA,IAAY,QACxD,OAAkB;AAAA,MACtB,GAAI,YAAY,CAAC,IAAI,SAAS,GAAG,IAAI,CAAA;AAAA,MACrC;AAAA,MACA,GAAI,SAAS,CAAC,MAAM,IAAI,CAAA;AAAA,IAAC;AAGvB,cAAU,UAAS,QAAQ,MAAM,GAAG,IAAI,IACnC,UAAU,SAAQ,QAAQ,KAAK,GAAG,IAAI,IAEtC,UAAU,SAAQ,QAAQ,KAAK,GAAG,IAAI,IAE1C,QAAQ,MAAM,GAAG,IAAI;AAAA,EAC5B;AAEA,SAAO;AAAA,IACL,OAAO,CAAC,SAAS,YAAY,WAAW,SAAS,SAAS,OAAO;AAAA,IACjE,MAAM,CAAC,SAAS,YAAY,WAAW,QAAQ,SAAS,OAAO;AAAA,IAC/D,MAAM,CAAC,SAAS,YAAY,WAAW,QAAQ,SAAS,OAAO;AAAA,IAC/D,OAAO,CAAC,SAAS,YAAY,WAAW,SAAS,SAAS,OAAO;AAAA,IACjE,OAAO,CAAC,QAAQ,YACd,aAAa;AAAA,MACX;AAAA,MACA,WAAW,YAAY,GAAG,SAAS,IAAI,MAAM,KAAK;AAAA,MAClD,SACE,eAAe,UAAU,EAAE,GAAG,aAAa,GAAG,YAAY;AAAA,IAAA,CAC7D;AAAA,EAAA;AAEP;AASO,MAAM,SAAiB,aAAa;AAAA,EACzC,WAAW;AAAA,EACX,UAAU;AACZ,CAAC;"}