@navios/adapter-xml 0.1.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.
Files changed (138) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +532 -0
  3. package/bun-plugin.mts +129 -0
  4. package/bunPlugin.cache +1 -0
  5. package/bunfig.toml +3 -0
  6. package/dist/bun-plugin.d.mts +4 -0
  7. package/dist/bun-plugin.d.mts.map +1 -0
  8. package/dist/e2e/bun/xml-stream.spec.d.ts +2 -0
  9. package/dist/e2e/bun/xml-stream.spec.d.ts.map +1 -0
  10. package/dist/e2e/fastify/xml-stream.spec.d.ts +2 -0
  11. package/dist/e2e/fastify/xml-stream.spec.d.ts.map +1 -0
  12. package/dist/src/adapters/index.d.mts +2 -0
  13. package/dist/src/adapters/index.d.mts.map +1 -0
  14. package/dist/src/adapters/xml-stream-adapter.service.d.mts +21 -0
  15. package/dist/src/adapters/xml-stream-adapter.service.d.mts.map +1 -0
  16. package/dist/src/decorators/component.decorator.d.mts +17 -0
  17. package/dist/src/decorators/component.decorator.d.mts.map +1 -0
  18. package/dist/src/decorators/component.decorator.spec.d.mts +2 -0
  19. package/dist/src/decorators/component.decorator.spec.d.mts.map +1 -0
  20. package/dist/src/decorators/index.d.mts +4 -0
  21. package/dist/src/decorators/index.d.mts.map +1 -0
  22. package/dist/src/decorators/xml-stream.decorator.d.mts +42 -0
  23. package/dist/src/decorators/xml-stream.decorator.d.mts.map +1 -0
  24. package/dist/src/define-environment.d.mts +31 -0
  25. package/dist/src/define-environment.d.mts.map +1 -0
  26. package/dist/src/handlers/index.d.mts +2 -0
  27. package/dist/src/handlers/index.d.mts.map +1 -0
  28. package/dist/src/handlers/xml-stream.d.mts +23 -0
  29. package/dist/src/handlers/xml-stream.d.mts.map +1 -0
  30. package/dist/src/index.d.mts +12 -0
  31. package/dist/src/index.d.mts.map +1 -0
  32. package/dist/src/jsx-dev-runtime.d.mts +5 -0
  33. package/dist/src/jsx-dev-runtime.d.mts.map +1 -0
  34. package/dist/src/jsx-runtime.d.mts +3 -0
  35. package/dist/src/jsx-runtime.d.mts.map +1 -0
  36. package/dist/src/jsx.d.mts +18 -0
  37. package/dist/src/jsx.d.mts.map +1 -0
  38. package/dist/src/runtime/create-element.d.mts +25 -0
  39. package/dist/src/runtime/create-element.d.mts.map +1 -0
  40. package/dist/src/runtime/fragment.d.mts +2 -0
  41. package/dist/src/runtime/fragment.d.mts.map +1 -0
  42. package/dist/src/runtime/index.d.mts +5 -0
  43. package/dist/src/runtime/index.d.mts.map +1 -0
  44. package/dist/src/runtime/render-to-xml.d.mts +20 -0
  45. package/dist/src/runtime/render-to-xml.d.mts.map +1 -0
  46. package/dist/src/runtime/render-to-xml.spec.d.mts +2 -0
  47. package/dist/src/runtime/render-to-xml.spec.d.mts.map +1 -0
  48. package/dist/src/runtime/special-nodes.d.mts +24 -0
  49. package/dist/src/runtime/special-nodes.d.mts.map +1 -0
  50. package/dist/src/tags/define-tag.d.mts +33 -0
  51. package/dist/src/tags/define-tag.d.mts.map +1 -0
  52. package/dist/src/tags/define-tag.spec.d.mts +2 -0
  53. package/dist/src/tags/define-tag.spec.d.mts.map +1 -0
  54. package/dist/src/tags/index.d.mts +3 -0
  55. package/dist/src/tags/index.d.mts.map +1 -0
  56. package/dist/src/types/component.d.mts +15 -0
  57. package/dist/src/types/component.d.mts.map +1 -0
  58. package/dist/src/types/config.d.mts +10 -0
  59. package/dist/src/types/config.d.mts.map +1 -0
  60. package/dist/src/types/index.d.mts +5 -0
  61. package/dist/src/types/index.d.mts.map +1 -0
  62. package/dist/src/types/xml-node.d.mts +35 -0
  63. package/dist/src/types/xml-node.d.mts.map +1 -0
  64. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  65. package/dist/tsconfig.spec.tsbuildinfo +1 -0
  66. package/dist/tsconfig.tsbuildinfo +1 -0
  67. package/dist/tsup.config.d.mts +3 -0
  68. package/dist/tsup.config.d.mts.map +1 -0
  69. package/dist/vitest.config.d.mts +3 -0
  70. package/dist/vitest.config.d.mts.map +1 -0
  71. package/dist/vitest.e2e.fastify.config.d.mts +3 -0
  72. package/dist/vitest.e2e.fastify.config.d.mts.map +1 -0
  73. package/e2e/bun/xml-stream.spec.tsx +553 -0
  74. package/e2e/fastify/xml-stream.spec.tsx +569 -0
  75. package/jsx.d.ts +42 -0
  76. package/lib/_tsup-dts-rollup.d.mts +414 -0
  77. package/lib/_tsup-dts-rollup.d.ts +414 -0
  78. package/lib/chunk-6OR6LGJA.mjs +153 -0
  79. package/lib/chunk-6OR6LGJA.mjs.map +1 -0
  80. package/lib/index.d.mts +29 -0
  81. package/lib/index.d.ts +29 -0
  82. package/lib/index.js +376 -0
  83. package/lib/index.js.map +1 -0
  84. package/lib/index.mjs +256 -0
  85. package/lib/index.mjs.map +1 -0
  86. package/lib/jsx-dev-runtime.d.mts +4 -0
  87. package/lib/jsx-dev-runtime.d.ts +4 -0
  88. package/lib/jsx-dev-runtime.js +61 -0
  89. package/lib/jsx-dev-runtime.js.map +1 -0
  90. package/lib/jsx-dev-runtime.mjs +9 -0
  91. package/lib/jsx-dev-runtime.mjs.map +1 -0
  92. package/lib/jsx-runtime.d.mts +3 -0
  93. package/lib/jsx-runtime.d.ts +3 -0
  94. package/lib/jsx-runtime.js +57 -0
  95. package/lib/jsx-runtime.js.map +1 -0
  96. package/lib/jsx-runtime.mjs +3 -0
  97. package/lib/jsx-runtime.mjs.map +1 -0
  98. package/lib/jsx.d.mts +1 -0
  99. package/lib/jsx.d.ts +1 -0
  100. package/lib/jsx.js +4 -0
  101. package/lib/jsx.js.map +1 -0
  102. package/lib/jsx.mjs +3 -0
  103. package/lib/jsx.mjs.map +1 -0
  104. package/package.json +80 -0
  105. package/project.json +91 -0
  106. package/src/adapters/index.mts +1 -0
  107. package/src/adapters/xml-stream-adapter.service.mts +121 -0
  108. package/src/decorators/component.decorator.mts +102 -0
  109. package/src/decorators/component.decorator.spec.mts +345 -0
  110. package/src/decorators/index.mts +4 -0
  111. package/src/decorators/xml-stream.decorator.mts +93 -0
  112. package/src/define-environment.mts +40 -0
  113. package/src/handlers/index.mts +1 -0
  114. package/src/handlers/xml-stream.mts +31 -0
  115. package/src/index.mts +41 -0
  116. package/src/jsx-dev-runtime.mts +8 -0
  117. package/src/jsx-runtime.mts +2 -0
  118. package/src/jsx.mts +25 -0
  119. package/src/runtime/create-element.mts +113 -0
  120. package/src/runtime/fragment.mts +1 -0
  121. package/src/runtime/index.mts +4 -0
  122. package/src/runtime/render-to-xml.mts +214 -0
  123. package/src/runtime/render-to-xml.spec.mts +360 -0
  124. package/src/runtime/special-nodes.mts +32 -0
  125. package/src/tags/define-tag.mts +54 -0
  126. package/src/tags/define-tag.spec.mts +250 -0
  127. package/src/tags/index.mts +2 -0
  128. package/src/types/component.mts +16 -0
  129. package/src/types/config.mts +15 -0
  130. package/src/types/index.mts +23 -0
  131. package/src/types/jsx.d.ts +21 -0
  132. package/src/types/xml-node.mts +50 -0
  133. package/tsconfig.json +24 -0
  134. package/tsconfig.lib.json +8 -0
  135. package/tsconfig.spec.json +25 -0
  136. package/tsup.config.mts +18 -0
  137. package/vitest.config.mts +9 -0
  138. package/vitest.e2e.fastify.config.mts +29 -0
@@ -0,0 +1,16 @@
1
+ import type { AnyXmlNode } from './xml-node.mjs'
2
+
3
+ /**
4
+ * Base interface for class components.
5
+ * The render method takes no arguments - props are received via constructor.
6
+ */
7
+ export interface XmlComponent {
8
+ render(): AnyXmlNode | Promise<AnyXmlNode>
9
+ }
10
+
11
+ /**
12
+ * Type for class component constructors.
13
+ */
14
+ export interface ComponentClass {
15
+ new (...args: any[]): XmlComponent
16
+ }
@@ -0,0 +1,15 @@
1
+ import type { BaseStreamConfig, HttpMethod } from '@navios/builder'
2
+
3
+ export interface BaseXmlStreamConfig<
4
+ Method extends HttpMethod = HttpMethod,
5
+ Url extends string = string,
6
+ QuerySchema = undefined,
7
+ RequestSchema = undefined,
8
+ > extends BaseStreamConfig<Method, Url, QuerySchema, RequestSchema> {
9
+ /** Content-Type header, defaults to 'application/xml' */
10
+ contentType?: 'application/xml' | 'text/xml' | 'application/rss+xml' | 'application/atom+xml'
11
+ /** Include XML declaration (<?xml version="1.0"?>) - defaults to true */
12
+ xmlDeclaration?: boolean
13
+ /** XML encoding, defaults to 'UTF-8' */
14
+ encoding?: string
15
+ }
@@ -0,0 +1,23 @@
1
+ export {
2
+ Fragment,
3
+ AsyncComponent,
4
+ CDataSymbol,
5
+ RawXmlSymbol,
6
+ ClassComponent,
7
+ } from './xml-node.mjs'
8
+
9
+ export type {
10
+ XmlNode,
11
+ AsyncXmlNode,
12
+ CDataNode,
13
+ RawXmlNode,
14
+ ClassComponentNode,
15
+ AnyXmlNode,
16
+ } from './xml-node.mjs'
17
+
18
+ export type { XmlComponent, ComponentClass } from './component.mjs'
19
+
20
+ export type { BaseXmlStreamConfig } from './config.mjs'
21
+
22
+ // Re-export JSX types for side effects
23
+
@@ -0,0 +1,21 @@
1
+ import type { AnyXmlNode, XmlNode } from './xml-node.mjs'
2
+
3
+ declare global {
4
+ namespace JSX {
5
+ type Element = XmlNode
6
+
7
+ interface ElementChildrenAttribute {
8
+ children: {}
9
+ }
10
+
11
+ interface IntrinsicElements {
12
+ // Allow any XML tag name with any props
13
+ [tagName: string]: {
14
+ [prop: string]: string | number | boolean | null | undefined
15
+ children?: AnyXmlNode | AnyXmlNode[]
16
+ }
17
+ }
18
+ }
19
+ }
20
+
21
+ export {}
@@ -0,0 +1,50 @@
1
+ import type { ComponentClass } from './component.mjs'
2
+
3
+ export const Fragment = Symbol.for('xml.fragment')
4
+ export const AsyncComponent = Symbol.for('xml.async')
5
+ export const CDataSymbol = Symbol.for('xml.cdata')
6
+ export const RawXmlSymbol = Symbol.for('xml.raw')
7
+ export const ClassComponent = Symbol.for('xml.class-component')
8
+
9
+ /** Represents a CDATA section - content is wrapped in <![CDATA[...]]> */
10
+ export interface CDataNode {
11
+ type: typeof CDataSymbol
12
+ content: string
13
+ }
14
+
15
+ /** Represents raw XML content - inserted without any escaping or wrapping */
16
+ export interface RawXmlNode {
17
+ type: typeof RawXmlSymbol
18
+ content: string
19
+ }
20
+
21
+ /** Represents a class component that needs to be resolved via DI */
22
+ export interface ClassComponentNode {
23
+ type: typeof ClassComponent
24
+ componentClass: ComponentClass
25
+ props: Record<string, unknown>
26
+ }
27
+
28
+ export interface XmlNode {
29
+ type: string | typeof Fragment
30
+ props: Record<string, unknown>
31
+ children: AnyXmlNode[]
32
+ }
33
+
34
+ /** Represents an async component that needs to be resolved before rendering */
35
+ export interface AsyncXmlNode {
36
+ type: typeof AsyncComponent
37
+ promise: Promise<AnyXmlNode>
38
+ }
39
+
40
+ /** Union type for all possible node types */
41
+ export type AnyXmlNode =
42
+ | XmlNode
43
+ | AsyncXmlNode
44
+ | CDataNode
45
+ | RawXmlNode
46
+ | ClassComponentNode
47
+ | string
48
+ | number
49
+ | null
50
+ | undefined
package/tsconfig.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "module": "Node18",
5
+ "outDir": "dist"
6
+ },
7
+ "references": [
8
+ {
9
+ "path": "./tsconfig.lib.json"
10
+ },
11
+ {
12
+ "path": "./tsconfig.spec.json"
13
+ },
14
+ {
15
+ "path": "../core"
16
+ },
17
+ {
18
+ "path": "../di"
19
+ },
20
+ {
21
+ "path": "../builder"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist"
5
+ },
6
+ "include": ["src/**/*.mts"],
7
+ "exclude": ["src/**/*.spec.mts", "src/**/__tests__/**"]
8
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "module": "preserve",
6
+ "moduleResolution": "bundler",
7
+ "jsx": "react-jsx",
8
+ "jsxImportSource": "@navios/adapter-xml",
9
+ "types": ["./jsx.d.ts"]
10
+ },
11
+ "include": [
12
+ "src/**/*.spec.mts",
13
+ "src/**/__tests__/*.spec.mts",
14
+ "e2e/**/*.mts",
15
+ "vitest.config.mts",
16
+ "vitest.e2e.fastify.config.mts",
17
+ "e2e/fastify/xml-stream.spec.tsx",
18
+ "e2e/bun/xml-stream.spec.tsx"
19
+ ],
20
+ "references": [
21
+ {
22
+ "path": "./tsconfig.lib.json"
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,18 @@
1
+ import { defineConfig } from 'tsup'
2
+
3
+ export default defineConfig({
4
+ entry: [
5
+ 'src/index.mts',
6
+ 'src/jsx-runtime.mts',
7
+ 'src/jsx-dev-runtime.mts',
8
+ 'src/jsx.mts',
9
+ ],
10
+ outDir: 'lib',
11
+ format: ['esm', 'cjs'],
12
+ clean: true,
13
+ tsconfig: 'tsconfig.lib.json',
14
+ treeshake: 'smallest',
15
+ sourcemap: true,
16
+ platform: 'node',
17
+ experimentalDts: true,
18
+ })
@@ -0,0 +1,9 @@
1
+ import { defineProject } from 'vitest/config'
2
+
3
+ export default defineProject({
4
+ test: {
5
+ typecheck: {
6
+ enabled: true,
7
+ },
8
+ },
9
+ })
@@ -0,0 +1,29 @@
1
+ import { resolve } from 'node:path'
2
+
3
+ import { defineProject } from 'vitest/config'
4
+
5
+ export default defineProject({
6
+ test: {
7
+ include: ['e2e/fastify/**/*.spec.tsx'],
8
+ typecheck: {
9
+ enabled: true,
10
+ },
11
+ },
12
+ esbuild: {
13
+ jsx: 'automatic',
14
+ jsxImportSource: '@navios/adapter-xml',
15
+ loader: 'tsx',
16
+ },
17
+ resolve: {
18
+ alias: {
19
+ '@navios/adapter-xml/jsx-dev-runtime': resolve(
20
+ __dirname,
21
+ 'src/jsx-dev-runtime.mts',
22
+ ),
23
+ '@navios/adapter-xml/jsx-runtime': resolve(
24
+ __dirname,
25
+ 'src/jsx-runtime.mts',
26
+ ),
27
+ },
28
+ },
29
+ })