@arkstack/view 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -36,11 +36,6 @@ function view(name, data = {}) {
36
36
  if (name === void 0) return View.factoryInstance();
37
37
  return View.make(name, data);
38
38
  }
39
- Object.defineProperty(globalThis, "view", {
40
- value: view,
41
- configurable: true,
42
- writable: true
43
- });
44
39
  const isClass = (target) => {
45
40
  return typeof target === "function" && /^class\s/.test(Function.prototype.toString.call(target));
46
41
  };
@@ -225,8 +220,21 @@ var ViewFactory = class {
225
220
 
226
221
  //#endregion
227
222
  //#region src/View.ts
228
- var View = class {
223
+ var View = class View {
229
224
  static factory = new ViewFactory();
225
+ /**
226
+ * Bootstrap the view service
227
+ */
228
+ static boot() {
229
+ Object.defineProperty(globalThis, "view", {
230
+ value: (name, data = {}) => {
231
+ if (name === void 0) return View.factoryInstance();
232
+ return View.make(name, data);
233
+ },
234
+ configurable: true,
235
+ writable: true
236
+ });
237
+ }
230
238
  static configure(options = {}) {
231
239
  this.factory = new ViewFactory(options);
232
240
  return this.factory;
package/dist/index.d.ts CHANGED
@@ -71,6 +71,7 @@ declare class ViewFactory {
71
71
  //#region src/View.d.ts
72
72
  declare class View {
73
73
  private static factory;
74
+ static boot(): void;
74
75
  static configure(options?: ViewFactoryOptions): ViewFactory;
75
76
  static factoryInstance(): ViewFactory;
76
77
  static make(name: ViewName, data?: ViewData): ViewInstance;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/ViewInstance.ts","../src/types.ts","../src/ViewFactory.ts","../src/View.ts","../src/helpers.ts","../src/packageViews.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/ViewInstance.ts","../src/types.ts","../src/ViewFactory.ts","../src/View.ts","../src/helpers.ts","../src/packageViews.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,11 +7,6 @@ function view(name, data = {}) {
7
7
  if (name === void 0) return View.factoryInstance();
8
8
  return View.make(name, data);
9
9
  }
10
- Object.defineProperty(globalThis, "view", {
11
- value: view,
12
- configurable: true,
13
- writable: true
14
- });
15
10
  const isClass = (target) => {
16
11
  return typeof target === "function" && /^class\s/.test(Function.prototype.toString.call(target));
17
12
  };
@@ -196,8 +191,21 @@ var ViewFactory = class {
196
191
 
197
192
  //#endregion
198
193
  //#region src/View.ts
199
- var View = class {
194
+ var View = class View {
200
195
  static factory = new ViewFactory();
196
+ /**
197
+ * Bootstrap the view service
198
+ */
199
+ static boot() {
200
+ Object.defineProperty(globalThis, "view", {
201
+ value: (name, data = {}) => {
202
+ if (name === void 0) return View.factoryInstance();
203
+ return View.make(name, data);
204
+ },
205
+ configurable: true,
206
+ writable: true
207
+ });
208
+ }
201
209
  static configure(options = {}) {
202
210
  this.factory = new ViewFactory(options);
203
211
  return this.factory;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Edge"],"sources":["../src/helpers.ts","../src/packageViews.ts","../src/ViewInstance.ts","../src/ViewFactory.ts","../src/View.ts"],"sourcesContent":["import type { ViewComposer, ViewComposerObject, ViewData, ViewName } from './types'\n\nimport { View } from './View'\nimport { ViewFactory } from './ViewFactory'\nimport { ViewInstance } from './ViewInstance'\n\nexport function view (): ViewFactory\nexport function view (name: ViewName, data?: ViewData): ViewInstance\nexport function view (name?: ViewName, data: ViewData = {}) {\n if (name === undefined) {\n return View.factoryInstance()\n }\n\n return View.make(name, data)\n}\n\nObject.defineProperty(globalThis, 'view', {\n value: view,\n configurable: true,\n writable: true,\n})\n\nexport const isClass = <T = unknown> (\n target: unknown\n): target is new (...args: any[]) => T => {\n return typeof target === 'function'\n && /^class\\s/.test(Function.prototype.toString.call(target))\n}\n\nexport const mergeData = (target: ViewData, data: any[]) => {\n if (data.length === 0) {\n return target\n }\n\n if (typeof data[0] === 'string') {\n target[data[0]] = data[1]\n\n return target\n }\n\n for (const value of data) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n Object.assign(target, value)\n }\n }\n\n return target\n}\n\nexport const runComposerSync = (composer: ViewComposer, view: ViewInstance) => {\n const result = runComposer(composer, view)\n\n if (result && typeof result.then === 'function') {\n throw new Error('Async view composers cannot be used with renderSync.')\n }\n}\n\nexport const runComposer = (composer: ViewComposer, view: ViewInstance) => {\n if (typeof composer === 'function') {\n if (isClass<ViewComposerObject>(composer)) {\n return new composer().compose(view)\n }\n\n return composer(view)\n }\n\n return composer.compose(view)\n}\n","import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport type PackageViewReference = {\n source: string\n packageName: string\n nodePackageName: string\n diskName: string\n viewName: string\n edgeName: string\n}\n\nexport const parsePackageViewName = (name: string): PackageViewReference | null => {\n if (!name.startsWith('~')) {\n return null\n }\n\n const source = name.slice(1)\n const slashIndex = source.indexOf('/')\n const dotIndex = slashIndex === -1\n ? source.indexOf('.')\n : source.indexOf('.', slashIndex)\n\n if (dotIndex <= 0) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const packageName = source.slice(0, dotIndex)\n const viewName = source.slice(dotIndex + 1)\n\n if (!viewName) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const nodePackageName = slashIndex === -1\n ? packageName\n : `@${packageName}`\n const diskName = `package_${packageName.replace(/[^a-zA-Z0-9_-]/g, '_')}`\n\n return {\n source: name,\n packageName,\n nodePackageName,\n diskName,\n viewName,\n edgeName: `${diskName}::${viewName}`,\n }\n}\n\nexport const resolvePackageViewsPath = (\n nodePackageName: string,\n viewPath = 'resources/views',\n) => {\n const packageRoot = resolve(process.cwd(), 'node_modules', nodePackageName)\n const viewsPath = resolve(packageRoot, viewPath)\n\n if (!existsSync(viewsPath)) {\n throw new Error(`Package views directory not found: ${viewsPath}`)\n }\n\n return viewsPath\n}\n","import type { ComposerRunner, SyncComposerRunner, ViewData } from './types'\n\nimport { mergeData } from './helpers'\n\nexport class ViewInstance implements PromiseLike<string> {\n private payload: ViewData\n private composersHaveRun = false\n\n constructor(\n readonly name: string,\n data: ViewData = {},\n private renderer: {\n render: (name: string, data?: ViewData) => Promise<string>\n renderSync: (name: string, data?: ViewData) => string\n },\n private runComposers: ComposerRunner,\n private runComposersSync: SyncComposerRunner,\n private renderName = name,\n ) {\n this.payload = { ...data }\n }\n\n get data () {\n return this.payload\n }\n\n with (key: string, value: any): this\n with (data: ViewData): this\n with (...data: any[]): this {\n mergeData(this.payload, data)\n\n return this\n }\n\n async render () {\n await this.compose()\n\n return await this.renderer.render(this.renderName, this.payload)\n }\n\n renderSync () {\n this.composeSync()\n\n return this.renderer.renderSync(this.renderName, this.payload)\n }\n\n then<TResult1 = string, TResult2 = never> (\n onfulfilled?: ((value: string) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return this.render().then(onfulfilled, onrejected)\n }\n\n private async compose () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n await this.runComposers(this)\n }\n\n private composeSync () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n this.runComposersSync(this)\n }\n}\n","import type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\nimport { mergeData, runComposer, runComposerSync } from './helpers'\nimport { parsePackageViewName, resolvePackageViewsPath } from './packageViews'\n\nimport { Edge } from 'edge.js'\nimport { ViewInstance } from './ViewInstance'\nimport { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport class ViewFactory {\n readonly edge: Edge\n private sharedData: ViewData = {}\n private composers = new Map<ViewName, ViewComposer[]>()\n private mountedPackages = new Set<string>()\n private packageViewsPath: string\n\n constructor(options: ViewFactoryOptions = {}) {\n this.edge = options.edge ?? Edge.create({ cache: options.cache })\n this.packageViewsPath = options.packageViewsPath ?? 'resources/views'\n this.mount(options.viewsPath ?? resolve(process.cwd(), 'src', 'resources', 'views'))\n }\n\n make (name: ViewName, data: ViewData = {}) {\n const edgeName = this.resolveName(name)\n\n return new ViewInstance(\n name,\n { ...this.sharedData, ...data },\n this.edge,\n async view => await this.runComposers(name, view),\n view => this.runComposersSync(name, view),\n edgeName,\n )\n }\n\n first (names: ViewName[], data: ViewData = {}) {\n const name = names.find(candidate => this.exists(candidate))\n\n if (!name) {\n throw new Error(`None of the given views exist: ${names.join(', ')}`)\n }\n\n return this.make(name, data)\n }\n\n exists (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n if (this.edge.loader.templates[edgeName]) {\n return true\n }\n\n try {\n return existsSync(this.edge.loader.makePath(edgeName))\n } catch {\n return false\n }\n }\n\n share (key: string, value: any): this\n share (data: ViewData): this\n share (...data: any[]): this {\n mergeData(this.sharedData, data)\n\n return this\n }\n\n composer (names: ViewComposerName, composer: ViewComposer): this {\n for (const name of Array.isArray(names) ? names : [names]) {\n this.composers.set(name, [\n ...(this.composers.get(name) ?? []),\n composer,\n ])\n }\n\n return this\n }\n\n mount (viewsDirectory: string | URL): this\n mount (diskName: string, viewsDirectory: string | URL): this\n mount (diskName: string | URL, viewsDirectory?: string | URL): this {\n if (viewsDirectory === undefined) {\n this.edge.mount(diskName)\n\n return this\n }\n\n this.edge.mount(diskName as string, viewsDirectory)\n\n return this\n }\n\n raw (name: ViewName, contents: string): this {\n this.edge.registerTemplate(name, { template: contents })\n\n return this\n }\n\n flushShared () {\n this.sharedData = {}\n\n return this\n }\n\n flushComposers () {\n this.composers.clear()\n\n return this\n }\n\n private getComposers (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n return [\n ...(this.composers.get('*') ?? []),\n ...(this.composers.get(edgeName) ?? []),\n ...(this.composers.get(name) ?? []),\n ]\n }\n\n private async runComposers (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n await runComposer(composer, view)\n }\n }\n\n private runComposersSync (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n runComposerSync(composer, view)\n }\n }\n\n private resolveName (name: ViewName) {\n const packageView = parsePackageViewName(name)\n\n if (!packageView) {\n return name\n }\n\n if (!this.mountedPackages.has(packageView.diskName)) {\n this.mount(\n packageView.diskName,\n resolvePackageViewsPath(packageView.nodePackageName, this.packageViewsPath),\n )\n this.mountedPackages.add(packageView.diskName)\n }\n\n return packageView.edgeName\n }\n}\n","import { ViewFactory } from './ViewFactory'\nimport type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\nimport type { ViewInstance } from './ViewInstance'\n\nexport class View {\n private static factory = new ViewFactory()\n\n static configure (options: ViewFactoryOptions = {}) {\n this.factory = new ViewFactory(options)\n\n return this.factory\n }\n\n static factoryInstance () {\n return this.factory\n }\n\n static make (name: ViewName, data: ViewData = {}): ViewInstance {\n return this.factory.make(name, data)\n }\n\n static first (names: ViewName[], data: ViewData = {}): ViewInstance {\n return this.factory.first(names, data)\n }\n\n static exists (name: ViewName) {\n return this.factory.exists(name)\n }\n\n static share (key: string, value: any): typeof View\n static share (data: ViewData): typeof View\n static share (...data: any[]) {\n if (typeof data[0] === 'string') {\n this.factory.share(data[0], data[1])\n } else {\n this.factory.share(data[0] ?? {})\n }\n\n return this\n }\n\n static composer (names: ViewComposerName, composer: ViewComposer): typeof View {\n this.factory.composer(names, composer)\n\n return this\n }\n\n static mount (viewsDirectory: string | URL): typeof View\n static mount (diskName: string, viewsDirectory: string | URL): typeof View\n static mount (diskName: string | URL, viewsDirectory?: string | URL) {\n if (viewsDirectory === undefined) {\n this.factory.mount(diskName)\n } else {\n this.factory.mount(diskName as string, viewsDirectory)\n }\n\n return this\n }\n\n static raw (name: ViewName, contents: string) {\n this.factory.raw(name, contents)\n\n return this\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["Edge"],"sources":["../src/helpers.ts","../src/packageViews.ts","../src/ViewInstance.ts","../src/ViewFactory.ts","../src/View.ts"],"sourcesContent":["import type { ViewComposer, ViewComposerObject, ViewData, ViewName } from './types'\n\nimport { View } from './View'\nimport { ViewFactory } from './ViewFactory'\nimport { ViewInstance } from './ViewInstance'\n\nexport function view (): ViewFactory\nexport function view (name: ViewName, data?: ViewData): ViewInstance\nexport function view (name?: ViewName, data: ViewData = {}) {\n if (name === undefined) {\n return View.factoryInstance()\n }\n\n return View.make(name, data)\n}\n\nexport const isClass = <T = unknown> (\n target: unknown\n): target is new (...args: any[]) => T => {\n return typeof target === 'function'\n && /^class\\s/.test(Function.prototype.toString.call(target))\n}\n\nexport const mergeData = (target: ViewData, data: any[]) => {\n if (data.length === 0) {\n return target\n }\n\n if (typeof data[0] === 'string') {\n target[data[0]] = data[1]\n\n return target\n }\n\n for (const value of data) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n Object.assign(target, value)\n }\n }\n\n return target\n}\n\nexport const runComposerSync = (composer: ViewComposer, view: ViewInstance) => {\n const result = runComposer(composer, view)\n\n if (result && typeof result.then === 'function') {\n throw new Error('Async view composers cannot be used with renderSync.')\n }\n}\n\nexport const runComposer = (composer: ViewComposer, view: ViewInstance) => {\n if (typeof composer === 'function') {\n if (isClass<ViewComposerObject>(composer)) {\n return new composer().compose(view)\n }\n\n return composer(view)\n }\n\n return composer.compose(view)\n}\n","import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport type PackageViewReference = {\n source: string\n packageName: string\n nodePackageName: string\n diskName: string\n viewName: string\n edgeName: string\n}\n\nexport const parsePackageViewName = (name: string): PackageViewReference | null => {\n if (!name.startsWith('~')) {\n return null\n }\n\n const source = name.slice(1)\n const slashIndex = source.indexOf('/')\n const dotIndex = slashIndex === -1\n ? source.indexOf('.')\n : source.indexOf('.', slashIndex)\n\n if (dotIndex <= 0) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const packageName = source.slice(0, dotIndex)\n const viewName = source.slice(dotIndex + 1)\n\n if (!viewName) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const nodePackageName = slashIndex === -1\n ? packageName\n : `@${packageName}`\n const diskName = `package_${packageName.replace(/[^a-zA-Z0-9_-]/g, '_')}`\n\n return {\n source: name,\n packageName,\n nodePackageName,\n diskName,\n viewName,\n edgeName: `${diskName}::${viewName}`,\n }\n}\n\nexport const resolvePackageViewsPath = (\n nodePackageName: string,\n viewPath = 'resources/views',\n) => {\n const packageRoot = resolve(process.cwd(), 'node_modules', nodePackageName)\n const viewsPath = resolve(packageRoot, viewPath)\n\n if (!existsSync(viewsPath)) {\n throw new Error(`Package views directory not found: ${viewsPath}`)\n }\n\n return viewsPath\n}\n","import type { ComposerRunner, SyncComposerRunner, ViewData } from './types'\n\nimport { mergeData } from './helpers'\n\nexport class ViewInstance implements PromiseLike<string> {\n private payload: ViewData\n private composersHaveRun = false\n\n constructor(\n readonly name: string,\n data: ViewData = {},\n private renderer: {\n render: (name: string, data?: ViewData) => Promise<string>\n renderSync: (name: string, data?: ViewData) => string\n },\n private runComposers: ComposerRunner,\n private runComposersSync: SyncComposerRunner,\n private renderName = name,\n ) {\n this.payload = { ...data }\n }\n\n get data () {\n return this.payload\n }\n\n with (key: string, value: any): this\n with (data: ViewData): this\n with (...data: any[]): this {\n mergeData(this.payload, data)\n\n return this\n }\n\n async render () {\n await this.compose()\n\n return await this.renderer.render(this.renderName, this.payload)\n }\n\n renderSync () {\n this.composeSync()\n\n return this.renderer.renderSync(this.renderName, this.payload)\n }\n\n then<TResult1 = string, TResult2 = never> (\n onfulfilled?: ((value: string) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return this.render().then(onfulfilled, onrejected)\n }\n\n private async compose () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n await this.runComposers(this)\n }\n\n private composeSync () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n this.runComposersSync(this)\n }\n}\n","import type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\nimport { mergeData, runComposer, runComposerSync } from './helpers'\nimport { parsePackageViewName, resolvePackageViewsPath } from './packageViews'\n\nimport { Edge } from 'edge.js'\nimport { ViewInstance } from './ViewInstance'\nimport { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport class ViewFactory {\n readonly edge: Edge\n private sharedData: ViewData = {}\n private composers = new Map<ViewName, ViewComposer[]>()\n private mountedPackages = new Set<string>()\n private packageViewsPath: string\n\n constructor(options: ViewFactoryOptions = {}) {\n this.edge = options.edge ?? Edge.create({ cache: options.cache })\n this.packageViewsPath = options.packageViewsPath ?? 'resources/views'\n this.mount(options.viewsPath ?? resolve(process.cwd(), 'src', 'resources', 'views'))\n }\n\n make (name: ViewName, data: ViewData = {}) {\n const edgeName = this.resolveName(name)\n\n return new ViewInstance(\n name,\n { ...this.sharedData, ...data },\n this.edge,\n async view => await this.runComposers(name, view),\n view => this.runComposersSync(name, view),\n edgeName,\n )\n }\n\n first (names: ViewName[], data: ViewData = {}) {\n const name = names.find(candidate => this.exists(candidate))\n\n if (!name) {\n throw new Error(`None of the given views exist: ${names.join(', ')}`)\n }\n\n return this.make(name, data)\n }\n\n exists (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n if (this.edge.loader.templates[edgeName]) {\n return true\n }\n\n try {\n return existsSync(this.edge.loader.makePath(edgeName))\n } catch {\n return false\n }\n }\n\n share (key: string, value: any): this\n share (data: ViewData): this\n share (...data: any[]): this {\n mergeData(this.sharedData, data)\n\n return this\n }\n\n composer (names: ViewComposerName, composer: ViewComposer): this {\n for (const name of Array.isArray(names) ? names : [names]) {\n this.composers.set(name, [\n ...(this.composers.get(name) ?? []),\n composer,\n ])\n }\n\n return this\n }\n\n mount (viewsDirectory: string | URL): this\n mount (diskName: string, viewsDirectory: string | URL): this\n mount (diskName: string | URL, viewsDirectory?: string | URL): this {\n if (viewsDirectory === undefined) {\n this.edge.mount(diskName)\n\n return this\n }\n\n this.edge.mount(diskName as string, viewsDirectory)\n\n return this\n }\n\n raw (name: ViewName, contents: string): this {\n this.edge.registerTemplate(name, { template: contents })\n\n return this\n }\n\n flushShared () {\n this.sharedData = {}\n\n return this\n }\n\n flushComposers () {\n this.composers.clear()\n\n return this\n }\n\n private getComposers (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n return [\n ...(this.composers.get('*') ?? []),\n ...(this.composers.get(edgeName) ?? []),\n ...(this.composers.get(name) ?? []),\n ]\n }\n\n private async runComposers (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n await runComposer(composer, view)\n }\n }\n\n private runComposersSync (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n runComposerSync(composer, view)\n }\n }\n\n private resolveName (name: ViewName) {\n const packageView = parsePackageViewName(name)\n\n if (!packageView) {\n return name\n }\n\n if (!this.mountedPackages.has(packageView.diskName)) {\n this.mount(\n packageView.diskName,\n resolvePackageViewsPath(packageView.nodePackageName, this.packageViewsPath),\n )\n this.mountedPackages.add(packageView.diskName)\n }\n\n return packageView.edgeName\n }\n}\n","import type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\n\nimport { ViewFactory } from './ViewFactory'\nimport type { ViewInstance } from './ViewInstance'\n\nexport class View {\n private static factory = new ViewFactory()\n\n /**\n * Bootstrap the view service\n */\n static boot () {\n Object.defineProperty(globalThis, 'view', {\n value: (name?: ViewName, data: ViewData = {}) => {\n if (name === undefined) {\n return View.factoryInstance()\n }\n\n return View.make(name, data)\n },\n configurable: true,\n writable: true,\n })\n }\n\n static configure (options: ViewFactoryOptions = {}) {\n this.factory = new ViewFactory(options)\n\n return this.factory\n }\n\n static factoryInstance () {\n return this.factory\n }\n\n static make (name: ViewName, data: ViewData = {}): ViewInstance {\n return this.factory.make(name, data)\n }\n\n static first (names: ViewName[], data: ViewData = {}): ViewInstance {\n return this.factory.first(names, data)\n }\n\n static exists (name: ViewName) {\n return this.factory.exists(name)\n }\n\n static share (key: string, value: any): typeof View\n static share (data: ViewData): typeof View\n static share (...data: any[]) {\n if (typeof data[0] === 'string') {\n this.factory.share(data[0], data[1])\n } else {\n this.factory.share(data[0] ?? {})\n }\n\n return this\n }\n\n static composer (names: ViewComposerName, composer: ViewComposer): typeof View {\n this.factory.composer(names, composer)\n\n return this\n }\n\n static mount (viewsDirectory: string | URL): typeof View\n static mount (diskName: string, viewsDirectory: string | URL): typeof View\n static mount (diskName: string | URL, viewsDirectory?: string | URL) {\n if (viewsDirectory === undefined) {\n this.factory.mount(diskName)\n } else {\n this.factory.mount(diskName as string, viewsDirectory)\n }\n\n return this\n }\n\n static raw (name: ViewName, contents: string) {\n this.factory.raw(name, contents)\n\n return this\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkstack/view",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
5
  "description": "View rendering package for Arkstack applications.",
6
6
  "homepage": "https://arkstack.toneflix.net",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@h3ravel/musket": "^0.10.1",
46
- "@arkstack/common": "^0.4.0"
46
+ "@arkstack/common": "^0.4.1"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "@h3ravel/musket": {