grafeo-ogm 1.0.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/LICENSE +21 -0
- package/README.md +1121 -0
- package/dist/cjs/compilers/fulltext.compiler.d.ts +67 -0
- package/dist/cjs/compilers/fulltext.compiler.d.ts.map +1 -0
- package/dist/cjs/compilers/fulltext.compiler.js +254 -0
- package/dist/cjs/compilers/fulltext.compiler.js.map +1 -0
- package/dist/cjs/compilers/mutation.compiler.d.ts +126 -0
- package/dist/cjs/compilers/mutation.compiler.d.ts.map +1 -0
- package/dist/cjs/compilers/mutation.compiler.js +1239 -0
- package/dist/cjs/compilers/mutation.compiler.js.map +1 -0
- package/dist/cjs/compilers/select-normalizer.d.ts +50 -0
- package/dist/cjs/compilers/select-normalizer.d.ts.map +1 -0
- package/dist/cjs/compilers/select-normalizer.js +225 -0
- package/dist/cjs/compilers/select-normalizer.js.map +1 -0
- package/dist/cjs/compilers/selection.compiler.d.ts +113 -0
- package/dist/cjs/compilers/selection.compiler.d.ts.map +1 -0
- package/dist/cjs/compilers/selection.compiler.js +410 -0
- package/dist/cjs/compilers/selection.compiler.js.map +1 -0
- package/dist/cjs/compilers/where.compiler.d.ts +39 -0
- package/dist/cjs/compilers/where.compiler.d.ts.map +1 -0
- package/dist/cjs/compilers/where.compiler.js +456 -0
- package/dist/cjs/compilers/where.compiler.js.map +1 -0
- package/dist/cjs/errors.d.ts +28 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +42 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/execution/executor.d.ts +38 -0
- package/dist/cjs/execution/executor.d.ts.map +1 -0
- package/dist/cjs/execution/executor.js +50 -0
- package/dist/cjs/execution/executor.js.map +1 -0
- package/dist/cjs/execution/result-mapper.d.ts +26 -0
- package/dist/cjs/execution/result-mapper.d.ts.map +1 -0
- package/dist/cjs/execution/result-mapper.js +92 -0
- package/dist/cjs/execution/result-mapper.js.map +1 -0
- package/dist/cjs/generator/generate-types.d.ts +55 -0
- package/dist/cjs/generator/generate-types.d.ts.map +1 -0
- package/dist/cjs/generator/generate-types.js +181 -0
- package/dist/cjs/generator/generate-types.js.map +1 -0
- package/dist/cjs/generator/index.d.ts +3 -0
- package/dist/cjs/generator/index.d.ts.map +1 -0
- package/dist/cjs/generator/index.js +6 -0
- package/dist/cjs/generator/index.js.map +1 -0
- package/dist/cjs/generator/type-emitters/aggregation-emitter.d.ts +7 -0
- package/dist/cjs/generator/type-emitters/aggregation-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/aggregation-emitter.js +196 -0
- package/dist/cjs/generator/type-emitters/aggregation-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/connection-emitter.d.ts +22 -0
- package/dist/cjs/generator/type-emitters/connection-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/connection-emitter.js +270 -0
- package/dist/cjs/generator/type-emitters/connection-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/enum-emitter.d.ts +7 -0
- package/dist/cjs/generator/type-emitters/enum-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/enum-emitter.js +45 -0
- package/dist/cjs/generator/type-emitters/enum-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/fulltext-emitter.d.ts +15 -0
- package/dist/cjs/generator/type-emitters/fulltext-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/fulltext-emitter.js +80 -0
- package/dist/cjs/generator/type-emitters/fulltext-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/helpers.d.ts +32 -0
- package/dist/cjs/generator/type-emitters/helpers.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/helpers.js +69 -0
- package/dist/cjs/generator/type-emitters/helpers.js.map +1 -0
- package/dist/cjs/generator/type-emitters/input-emitter.d.ts +6 -0
- package/dist/cjs/generator/type-emitters/input-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/input-emitter.js +560 -0
- package/dist/cjs/generator/type-emitters/input-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/interface-emitter.d.ts +10 -0
- package/dist/cjs/generator/type-emitters/interface-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/interface-emitter.js +88 -0
- package/dist/cjs/generator/type-emitters/interface-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts +32 -0
- package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/model-map-emitter.js +154 -0
- package/dist/cjs/generator/type-emitters/model-map-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/mutation-response-emitter.d.ts +9 -0
- package/dist/cjs/generator/type-emitters/mutation-response-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/mutation-response-emitter.js +69 -0
- package/dist/cjs/generator/type-emitters/mutation-response-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/node-type-emitter.d.ts +13 -0
- package/dist/cjs/generator/type-emitters/node-type-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/node-type-emitter.js +123 -0
- package/dist/cjs/generator/type-emitters/node-type-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/select-fields-emitter.d.ts +8 -0
- package/dist/cjs/generator/type-emitters/select-fields-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/select-fields-emitter.js +169 -0
- package/dist/cjs/generator/type-emitters/select-fields-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/select-result-emitter.d.ts +9 -0
- package/dist/cjs/generator/type-emitters/select-result-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/select-result-emitter.js +61 -0
- package/dist/cjs/generator/type-emitters/select-result-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/sort-options-emitter.d.ts +8 -0
- package/dist/cjs/generator/type-emitters/sort-options-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/sort-options-emitter.js +47 -0
- package/dist/cjs/generator/type-emitters/sort-options-emitter.js.map +1 -0
- package/dist/cjs/generator/type-emitters/utility-types.d.ts +10 -0
- package/dist/cjs/generator/type-emitters/utility-types.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/utility-types.js +93 -0
- package/dist/cjs/generator/type-emitters/utility-types.js.map +1 -0
- package/dist/cjs/generator/type-emitters/where-emitter.d.ts +15 -0
- package/dist/cjs/generator/type-emitters/where-emitter.d.ts.map +1 -0
- package/dist/cjs/generator/type-emitters/where-emitter.js +189 -0
- package/dist/cjs/generator/type-emitters/where-emitter.js.map +1 -0
- package/dist/cjs/index.d.ts +30 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +59 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interface-model.d.ts +158 -0
- package/dist/cjs/interface-model.d.ts.map +1 -0
- package/dist/cjs/interface-model.js +214 -0
- package/dist/cjs/interface-model.js.map +1 -0
- package/dist/cjs/model.d.ts +354 -0
- package/dist/cjs/model.d.ts.map +1 -0
- package/dist/cjs/model.js +513 -0
- package/dist/cjs/model.js.map +1 -0
- package/dist/cjs/ogm.d.ts +97 -0
- package/dist/cjs/ogm.d.ts.map +1 -0
- package/dist/cjs/ogm.js +224 -0
- package/dist/cjs/ogm.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schema/parser.d.ts +12 -0
- package/dist/cjs/schema/parser.d.ts.map +1 -0
- package/dist/cjs/schema/parser.js +331 -0
- package/dist/cjs/schema/parser.js.map +1 -0
- package/dist/cjs/schema/types.d.ts +66 -0
- package/dist/cjs/schema/types.d.ts.map +1 -0
- package/dist/cjs/schema/types.js +3 -0
- package/dist/cjs/schema/types.js.map +1 -0
- package/dist/cjs/schema/utils.d.ts +23 -0
- package/dist/cjs/schema/utils.d.ts.map +1 -0
- package/dist/cjs/schema/utils.js +92 -0
- package/dist/cjs/schema/utils.js.map +1 -0
- package/dist/cjs/subgraph/index.d.ts +3 -0
- package/dist/cjs/subgraph/index.d.ts.map +1 -0
- package/dist/cjs/subgraph/index.js +7 -0
- package/dist/cjs/subgraph/index.js.map +1 -0
- package/dist/cjs/subgraph/subgraph-operations.d.ts +34 -0
- package/dist/cjs/subgraph/subgraph-operations.d.ts.map +1 -0
- package/dist/cjs/subgraph/subgraph-operations.js +225 -0
- package/dist/cjs/subgraph/subgraph-operations.js.map +1 -0
- package/dist/cjs/subgraph/types.d.ts +23 -0
- package/dist/cjs/subgraph/types.d.ts.map +1 -0
- package/dist/cjs/subgraph/types.js +3 -0
- package/dist/cjs/subgraph/types.js.map +1 -0
- package/dist/cjs/testing/cypher-assert.d.ts +35 -0
- package/dist/cjs/testing/cypher-assert.d.ts.map +1 -0
- package/dist/cjs/testing/cypher-assert.js +72 -0
- package/dist/cjs/testing/cypher-assert.js.map +1 -0
- package/dist/cjs/testing/index.d.ts +4 -0
- package/dist/cjs/testing/index.d.ts.map +1 -0
- package/dist/cjs/testing/index.js +10 -0
- package/dist/cjs/testing/index.js.map +1 -0
- package/dist/cjs/testing/neo4j-record-factory.d.ts +25 -0
- package/dist/cjs/testing/neo4j-record-factory.d.ts.map +1 -0
- package/dist/cjs/testing/neo4j-record-factory.js +43 -0
- package/dist/cjs/testing/neo4j-record-factory.js.map +1 -0
- package/dist/cjs/testing/selection-set-factory.d.ts +24 -0
- package/dist/cjs/testing/selection-set-factory.d.ts.map +1 -0
- package/dist/cjs/testing/selection-set-factory.js +44 -0
- package/dist/cjs/testing/selection-set-factory.js.map +1 -0
- package/dist/cjs/utils/lucene.d.ts +9 -0
- package/dist/cjs/utils/lucene.d.ts.map +1 -0
- package/dist/cjs/utils/lucene.js +25 -0
- package/dist/cjs/utils/lucene.js.map +1 -0
- package/dist/cjs/utils/validation.d.ts +25 -0
- package/dist/cjs/utils/validation.d.ts.map +1 -0
- package/dist/cjs/utils/validation.js +53 -0
- package/dist/cjs/utils/validation.js.map +1 -0
- package/dist/esm/compilers/fulltext.compiler.d.ts +67 -0
- package/dist/esm/compilers/fulltext.compiler.d.ts.map +1 -0
- package/dist/esm/compilers/fulltext.compiler.js +250 -0
- package/dist/esm/compilers/fulltext.compiler.js.map +1 -0
- package/dist/esm/compilers/mutation.compiler.d.ts +126 -0
- package/dist/esm/compilers/mutation.compiler.d.ts.map +1 -0
- package/dist/esm/compilers/mutation.compiler.js +1235 -0
- package/dist/esm/compilers/mutation.compiler.js.map +1 -0
- package/dist/esm/compilers/select-normalizer.d.ts +50 -0
- package/dist/esm/compilers/select-normalizer.d.ts.map +1 -0
- package/dist/esm/compilers/select-normalizer.js +221 -0
- package/dist/esm/compilers/select-normalizer.js.map +1 -0
- package/dist/esm/compilers/selection.compiler.d.ts +113 -0
- package/dist/esm/compilers/selection.compiler.d.ts.map +1 -0
- package/dist/esm/compilers/selection.compiler.js +406 -0
- package/dist/esm/compilers/selection.compiler.js.map +1 -0
- package/dist/esm/compilers/where.compiler.d.ts +39 -0
- package/dist/esm/compilers/where.compiler.d.ts.map +1 -0
- package/dist/esm/compilers/where.compiler.js +452 -0
- package/dist/esm/compilers/where.compiler.js.map +1 -0
- package/dist/esm/errors.d.ts +28 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +36 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/execution/executor.d.ts +38 -0
- package/dist/esm/execution/executor.d.ts.map +1 -0
- package/dist/esm/execution/executor.js +46 -0
- package/dist/esm/execution/executor.js.map +1 -0
- package/dist/esm/execution/result-mapper.d.ts +26 -0
- package/dist/esm/execution/result-mapper.d.ts.map +1 -0
- package/dist/esm/execution/result-mapper.js +85 -0
- package/dist/esm/execution/result-mapper.js.map +1 -0
- package/dist/esm/generator/generate-types.d.ts +55 -0
- package/dist/esm/generator/generate-types.d.ts.map +1 -0
- package/dist/esm/generator/generate-types.js +141 -0
- package/dist/esm/generator/generate-types.js.map +1 -0
- package/dist/esm/generator/index.d.ts +3 -0
- package/dist/esm/generator/index.d.ts.map +1 -0
- package/dist/esm/generator/index.js +2 -0
- package/dist/esm/generator/index.js.map +1 -0
- package/dist/esm/generator/type-emitters/aggregation-emitter.d.ts +7 -0
- package/dist/esm/generator/type-emitters/aggregation-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/aggregation-emitter.js +193 -0
- package/dist/esm/generator/type-emitters/aggregation-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/connection-emitter.d.ts +22 -0
- package/dist/esm/generator/type-emitters/connection-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/connection-emitter.js +266 -0
- package/dist/esm/generator/type-emitters/connection-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/enum-emitter.d.ts +7 -0
- package/dist/esm/generator/type-emitters/enum-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/enum-emitter.js +42 -0
- package/dist/esm/generator/type-emitters/enum-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/fulltext-emitter.d.ts +15 -0
- package/dist/esm/generator/type-emitters/fulltext-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/fulltext-emitter.js +77 -0
- package/dist/esm/generator/type-emitters/fulltext-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/helpers.d.ts +32 -0
- package/dist/esm/generator/type-emitters/helpers.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/helpers.js +63 -0
- package/dist/esm/generator/type-emitters/helpers.js.map +1 -0
- package/dist/esm/generator/type-emitters/input-emitter.d.ts +6 -0
- package/dist/esm/generator/type-emitters/input-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/input-emitter.js +557 -0
- package/dist/esm/generator/type-emitters/input-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/interface-emitter.d.ts +10 -0
- package/dist/esm/generator/type-emitters/interface-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/interface-emitter.js +85 -0
- package/dist/esm/generator/type-emitters/interface-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/model-map-emitter.d.ts +32 -0
- package/dist/esm/generator/type-emitters/model-map-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/model-map-emitter.js +149 -0
- package/dist/esm/generator/type-emitters/model-map-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/mutation-response-emitter.d.ts +9 -0
- package/dist/esm/generator/type-emitters/mutation-response-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/mutation-response-emitter.js +66 -0
- package/dist/esm/generator/type-emitters/mutation-response-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/node-type-emitter.d.ts +13 -0
- package/dist/esm/generator/type-emitters/node-type-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/node-type-emitter.js +120 -0
- package/dist/esm/generator/type-emitters/node-type-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/select-fields-emitter.d.ts +8 -0
- package/dist/esm/generator/type-emitters/select-fields-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/select-fields-emitter.js +166 -0
- package/dist/esm/generator/type-emitters/select-fields-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/select-result-emitter.d.ts +9 -0
- package/dist/esm/generator/type-emitters/select-result-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/select-result-emitter.js +58 -0
- package/dist/esm/generator/type-emitters/select-result-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/sort-options-emitter.d.ts +8 -0
- package/dist/esm/generator/type-emitters/sort-options-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/sort-options-emitter.js +44 -0
- package/dist/esm/generator/type-emitters/sort-options-emitter.js.map +1 -0
- package/dist/esm/generator/type-emitters/utility-types.d.ts +10 -0
- package/dist/esm/generator/type-emitters/utility-types.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/utility-types.js +88 -0
- package/dist/esm/generator/type-emitters/utility-types.js.map +1 -0
- package/dist/esm/generator/type-emitters/where-emitter.d.ts +15 -0
- package/dist/esm/generator/type-emitters/where-emitter.d.ts.map +1 -0
- package/dist/esm/generator/type-emitters/where-emitter.js +186 -0
- package/dist/esm/generator/type-emitters/where-emitter.js.map +1 -0
- package/dist/esm/index.d.ts +30 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +29 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interface-model.d.ts +158 -0
- package/dist/esm/interface-model.d.ts.map +1 -0
- package/dist/esm/interface-model.js +210 -0
- package/dist/esm/interface-model.js.map +1 -0
- package/dist/esm/model.d.ts +354 -0
- package/dist/esm/model.d.ts.map +1 -0
- package/dist/esm/model.js +507 -0
- package/dist/esm/model.js.map +1 -0
- package/dist/esm/ogm.d.ts +97 -0
- package/dist/esm/ogm.d.ts.map +1 -0
- package/dist/esm/ogm.js +220 -0
- package/dist/esm/ogm.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schema/parser.d.ts +12 -0
- package/dist/esm/schema/parser.d.ts.map +1 -0
- package/dist/esm/schema/parser.js +324 -0
- package/dist/esm/schema/parser.js.map +1 -0
- package/dist/esm/schema/types.d.ts +66 -0
- package/dist/esm/schema/types.d.ts.map +1 -0
- package/dist/esm/schema/types.js +2 -0
- package/dist/esm/schema/types.js.map +1 -0
- package/dist/esm/schema/utils.d.ts +23 -0
- package/dist/esm/schema/utils.d.ts.map +1 -0
- package/dist/esm/schema/utils.js +87 -0
- package/dist/esm/schema/utils.js.map +1 -0
- package/dist/esm/subgraph/index.d.ts +3 -0
- package/dist/esm/subgraph/index.d.ts.map +1 -0
- package/dist/esm/subgraph/index.js +2 -0
- package/dist/esm/subgraph/index.js.map +1 -0
- package/dist/esm/subgraph/subgraph-operations.d.ts +34 -0
- package/dist/esm/subgraph/subgraph-operations.d.ts.map +1 -0
- package/dist/esm/subgraph/subgraph-operations.js +221 -0
- package/dist/esm/subgraph/subgraph-operations.js.map +1 -0
- package/dist/esm/subgraph/types.d.ts +23 -0
- package/dist/esm/subgraph/types.d.ts.map +1 -0
- package/dist/esm/subgraph/types.js +2 -0
- package/dist/esm/subgraph/types.js.map +1 -0
- package/dist/esm/testing/cypher-assert.d.ts +35 -0
- package/dist/esm/testing/cypher-assert.d.ts.map +1 -0
- package/dist/esm/testing/cypher-assert.js +68 -0
- package/dist/esm/testing/cypher-assert.js.map +1 -0
- package/dist/esm/testing/index.d.ts +4 -0
- package/dist/esm/testing/index.d.ts.map +1 -0
- package/dist/esm/testing/index.js +4 -0
- package/dist/esm/testing/index.js.map +1 -0
- package/dist/esm/testing/neo4j-record-factory.d.ts +25 -0
- package/dist/esm/testing/neo4j-record-factory.d.ts.map +1 -0
- package/dist/esm/testing/neo4j-record-factory.js +36 -0
- package/dist/esm/testing/neo4j-record-factory.js.map +1 -0
- package/dist/esm/testing/selection-set-factory.d.ts +24 -0
- package/dist/esm/testing/selection-set-factory.d.ts.map +1 -0
- package/dist/esm/testing/selection-set-factory.js +40 -0
- package/dist/esm/testing/selection-set-factory.js.map +1 -0
- package/dist/esm/utils/lucene.d.ts +9 -0
- package/dist/esm/utils/lucene.d.ts.map +1 -0
- package/dist/esm/utils/lucene.js +22 -0
- package/dist/esm/utils/lucene.js.map +1 -0
- package/dist/esm/utils/validation.d.ts +25 -0
- package/dist/esm/utils/validation.d.ts.map +1 -0
- package/dist/esm/utils/validation.js +46 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Record as Neo4jRecord } from 'neo4j-driver';
|
|
2
|
+
/**
|
|
3
|
+
* Maps Neo4j query results to plain JavaScript objects,
|
|
4
|
+
* converting Neo4j-specific types (Integer, DateTime, Node, etc.)
|
|
5
|
+
* to standard JS values.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ResultMapper {
|
|
8
|
+
/**
|
|
9
|
+
* Convert a Neo4j Record to a plain object, handling Neo4j-specific types.
|
|
10
|
+
* If returnKey is provided, extracts that key from the record.
|
|
11
|
+
* Otherwise converts the entire record to an object.
|
|
12
|
+
*/
|
|
13
|
+
static mapRecord(record: Neo4jRecord, returnKey?: string): Record<string, unknown>;
|
|
14
|
+
/**
|
|
15
|
+
* Map all records from a query result.
|
|
16
|
+
*/
|
|
17
|
+
static mapRecords(records: Neo4jRecord[], returnKey?: string): Record<string, unknown>[];
|
|
18
|
+
/**
|
|
19
|
+
* Convert Neo4j-specific types to plain JS values recursively.
|
|
20
|
+
* Handles: Integer, DateTime, Date, Time, Point, Node, Relationship, arrays, objects.
|
|
21
|
+
* Note: The driver is typically configured with disableLosslessIntegers: true,
|
|
22
|
+
* so Integer conversion is mainly for safety.
|
|
23
|
+
*/
|
|
24
|
+
static convertNeo4jTypes(value: unknown, depth?: number): unknown;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=result-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-mapper.d.ts","sourceRoot":"","sources":["../../../src/execution/result-mapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAGrD;;;;GAIG;AACH,qBAAa,YAAY;IACvB;;;;OAIG;IACH,MAAM,CAAC,SAAS,CACd,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU1B;;OAEG;IACH,MAAM,CAAC,UAAU,CACf,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAI5B;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO;CA+DrE"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ResultMapper = void 0;
|
|
7
|
+
const neo4j_driver_1 = __importDefault(require("neo4j-driver"));
|
|
8
|
+
const errors_1 = require("../errors");
|
|
9
|
+
/**
|
|
10
|
+
* Maps Neo4j query results to plain JavaScript objects,
|
|
11
|
+
* converting Neo4j-specific types (Integer, DateTime, Node, etc.)
|
|
12
|
+
* to standard JS values.
|
|
13
|
+
*/
|
|
14
|
+
class ResultMapper {
|
|
15
|
+
/**
|
|
16
|
+
* Convert a Neo4j Record to a plain object, handling Neo4j-specific types.
|
|
17
|
+
* If returnKey is provided, extracts that key from the record.
|
|
18
|
+
* Otherwise converts the entire record to an object.
|
|
19
|
+
*/
|
|
20
|
+
static mapRecord(record, returnKey) {
|
|
21
|
+
if (returnKey) {
|
|
22
|
+
const value = record.get(returnKey);
|
|
23
|
+
return ResultMapper.convertNeo4jTypes(value);
|
|
24
|
+
}
|
|
25
|
+
const obj = record.toObject();
|
|
26
|
+
return ResultMapper.convertNeo4jTypes(obj);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Map all records from a query result.
|
|
30
|
+
*/
|
|
31
|
+
static mapRecords(records, returnKey) {
|
|
32
|
+
return records.map((record) => ResultMapper.mapRecord(record, returnKey));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Convert Neo4j-specific types to plain JS values recursively.
|
|
36
|
+
* Handles: Integer, DateTime, Date, Time, Point, Node, Relationship, arrays, objects.
|
|
37
|
+
* Note: The driver is typically configured with disableLosslessIntegers: true,
|
|
38
|
+
* so Integer conversion is mainly for safety.
|
|
39
|
+
*/
|
|
40
|
+
static convertNeo4jTypes(value, depth = 0) {
|
|
41
|
+
// Guard against pathological nesting causing stack overflow
|
|
42
|
+
if (depth > 50)
|
|
43
|
+
throw new errors_1.OGMError('convertNeo4jTypes: maximum recursion depth (50) exceeded. Possible circular or deeply nested result.');
|
|
44
|
+
// Fast path: null/undefined
|
|
45
|
+
if (value === null || value === undefined)
|
|
46
|
+
return value;
|
|
47
|
+
// Fast path: primitives (most common in query results)
|
|
48
|
+
if (typeof value !== 'object')
|
|
49
|
+
return value;
|
|
50
|
+
// Neo4j Integer → number
|
|
51
|
+
if (neo4j_driver_1.default.isInt(value))
|
|
52
|
+
return value.toNumber();
|
|
53
|
+
// Array → map each element (check before other object types)
|
|
54
|
+
if (Array.isArray(value))
|
|
55
|
+
return value.map((item) => ResultMapper.convertNeo4jTypes(item, depth + 1));
|
|
56
|
+
// Neo4j temporal types → ISO string
|
|
57
|
+
if (neo4j_driver_1.default.isDateTime(value) ||
|
|
58
|
+
neo4j_driver_1.default.isDate(value) ||
|
|
59
|
+
neo4j_driver_1.default.isTime(value) ||
|
|
60
|
+
neo4j_driver_1.default.isLocalDateTime(value) ||
|
|
61
|
+
neo4j_driver_1.default.isLocalTime(value) ||
|
|
62
|
+
neo4j_driver_1.default.isDuration(value))
|
|
63
|
+
return value.toString();
|
|
64
|
+
// Neo4j Point → plain object
|
|
65
|
+
if (neo4j_driver_1.default.isPoint(value)) {
|
|
66
|
+
const point = {
|
|
67
|
+
x: value.x,
|
|
68
|
+
y: value.y,
|
|
69
|
+
srid: value.srid,
|
|
70
|
+
};
|
|
71
|
+
if (value.z !== undefined)
|
|
72
|
+
point.z = value.z;
|
|
73
|
+
return point;
|
|
74
|
+
}
|
|
75
|
+
// Neo4j Node → convert its properties
|
|
76
|
+
if (value instanceof neo4j_driver_1.default.types.Node)
|
|
77
|
+
return ResultMapper.convertNeo4jTypes(value.properties, depth + 1);
|
|
78
|
+
// Neo4j Relationship → convert its properties
|
|
79
|
+
if (value instanceof neo4j_driver_1.default.types.Relationship)
|
|
80
|
+
return ResultMapper.convertNeo4jTypes(value.properties, depth + 1);
|
|
81
|
+
// Neo4j Path → not supported
|
|
82
|
+
if (value instanceof neo4j_driver_1.default.types.Path)
|
|
83
|
+
throw new errors_1.OGMError('Path type conversion is not supported');
|
|
84
|
+
// Plain object → recurse on values (use Object.create(null) to prevent prototype pollution)
|
|
85
|
+
const result = Object.create(null);
|
|
86
|
+
for (const [key, val] of Object.entries(value))
|
|
87
|
+
result[key] = ResultMapper.convertNeo4jTypes(val, depth + 1);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.ResultMapper = ResultMapper;
|
|
92
|
+
//# sourceMappingURL=result-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-mapper.js","sourceRoot":"","sources":["../../../src/execution/result-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface GenerateTypesOptions {
|
|
2
|
+
/** Raw schema.graphql content */
|
|
3
|
+
typeDefs: string;
|
|
4
|
+
/** Output file path */
|
|
5
|
+
outFile: string;
|
|
6
|
+
/** Optional configuration */
|
|
7
|
+
config?: GenerateTypesConfig;
|
|
8
|
+
}
|
|
9
|
+
export interface GenerateTypesConfig {
|
|
10
|
+
/** Enable MATCHES operator for string fields (default: true) */
|
|
11
|
+
stringMatchesFilter?: boolean;
|
|
12
|
+
/** Format output with prettier (default: true) */
|
|
13
|
+
formatOutput?: boolean;
|
|
14
|
+
/** Custom prettier configuration */
|
|
15
|
+
prettierConfig?: Record<string, unknown>;
|
|
16
|
+
/** Custom header comment prepended to the generated file */
|
|
17
|
+
header?: string;
|
|
18
|
+
/** Package name used in generated import statements (default: 'grafeo-ogm') */
|
|
19
|
+
packageName?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface GenerateTypesResult {
|
|
22
|
+
/** Absolute path of the written file */
|
|
23
|
+
outputPath: string;
|
|
24
|
+
/** Number of exported types / interfaces / enums */
|
|
25
|
+
typeCount: number;
|
|
26
|
+
/** File size in bytes */
|
|
27
|
+
fileSize: number;
|
|
28
|
+
/** Generation duration in milliseconds */
|
|
29
|
+
durationMs: number;
|
|
30
|
+
/** Non-fatal warnings encountered during generation */
|
|
31
|
+
warnings: GeneratorWarning[];
|
|
32
|
+
}
|
|
33
|
+
export interface GeneratorWarning {
|
|
34
|
+
code: 'UNKNOWN_DIRECTIVE' | 'UNSUPPORTED_TYPE' | 'CIRCULAR_REFERENCE';
|
|
35
|
+
message: string;
|
|
36
|
+
location?: {
|
|
37
|
+
typeName: string;
|
|
38
|
+
fieldName?: string;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export declare class SchemaParseError extends Error {
|
|
42
|
+
constructor(message: string);
|
|
43
|
+
}
|
|
44
|
+
export declare class OutputPathError extends Error {
|
|
45
|
+
constructor(message: string);
|
|
46
|
+
}
|
|
47
|
+
export declare class EmptySchemaError extends Error {
|
|
48
|
+
constructor(message: string);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Parse a GraphQL schema, emit TypeScript type declarations, and write the
|
|
52
|
+
* result to disk.
|
|
53
|
+
*/
|
|
54
|
+
export declare function generateTypes(options: GenerateTypesOptions): Promise<GenerateTypesResult>;
|
|
55
|
+
//# sourceMappingURL=generate-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-types.d.ts","sourceRoot":"","sources":["../../../src/generator/generate-types.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;AAMD,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAoBD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAgG9B"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EmptySchemaError = exports.OutputPathError = exports.SchemaParseError = void 0;
|
|
37
|
+
exports.generateTypes = generateTypes;
|
|
38
|
+
const fs = __importStar(require("node:fs"));
|
|
39
|
+
const path = __importStar(require("node:path"));
|
|
40
|
+
const parser_1 = require("../schema/parser");
|
|
41
|
+
const utility_types_1 = require("./type-emitters/utility-types");
|
|
42
|
+
const enum_emitter_1 = require("./type-emitters/enum-emitter");
|
|
43
|
+
const node_type_emitter_1 = require("./type-emitters/node-type-emitter");
|
|
44
|
+
const interface_emitter_1 = require("./type-emitters/interface-emitter");
|
|
45
|
+
const where_emitter_1 = require("./type-emitters/where-emitter");
|
|
46
|
+
const connection_emitter_1 = require("./type-emitters/connection-emitter");
|
|
47
|
+
const input_emitter_1 = require("./type-emitters/input-emitter");
|
|
48
|
+
const sort_options_emitter_1 = require("./type-emitters/sort-options-emitter");
|
|
49
|
+
const aggregation_emitter_1 = require("./type-emitters/aggregation-emitter");
|
|
50
|
+
const mutation_response_emitter_1 = require("./type-emitters/mutation-response-emitter");
|
|
51
|
+
const fulltext_emitter_1 = require("./type-emitters/fulltext-emitter");
|
|
52
|
+
const select_fields_emitter_1 = require("./type-emitters/select-fields-emitter");
|
|
53
|
+
const select_result_emitter_1 = require("./type-emitters/select-result-emitter");
|
|
54
|
+
const model_map_emitter_1 = require("./type-emitters/model-map-emitter");
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// Error classes
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
class SchemaParseError extends Error {
|
|
59
|
+
constructor(message) {
|
|
60
|
+
super(message);
|
|
61
|
+
this.name = 'SchemaParseError';
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SchemaParseError = SchemaParseError;
|
|
65
|
+
class OutputPathError extends Error {
|
|
66
|
+
constructor(message) {
|
|
67
|
+
super(message);
|
|
68
|
+
this.name = 'OutputPathError';
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.OutputPathError = OutputPathError;
|
|
72
|
+
class EmptySchemaError extends Error {
|
|
73
|
+
constructor(message) {
|
|
74
|
+
super(message);
|
|
75
|
+
this.name = 'EmptySchemaError';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.EmptySchemaError = EmptySchemaError;
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
// Helpers
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
function countExportedTypes(source) {
|
|
83
|
+
const patterns = [/export type /g, /export interface /g, /export enum /g];
|
|
84
|
+
let count = 0;
|
|
85
|
+
for (const pattern of patterns) {
|
|
86
|
+
const matches = source.match(pattern);
|
|
87
|
+
if (matches)
|
|
88
|
+
count += matches.length;
|
|
89
|
+
}
|
|
90
|
+
return count;
|
|
91
|
+
}
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
// Main entry point
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
/**
|
|
96
|
+
* Parse a GraphQL schema, emit TypeScript type declarations, and write the
|
|
97
|
+
* result to disk.
|
|
98
|
+
*/
|
|
99
|
+
async function generateTypes(options) {
|
|
100
|
+
const start = performance.now();
|
|
101
|
+
const warnings = [];
|
|
102
|
+
// 1. Parse schema --------------------------------------------------------
|
|
103
|
+
let metadata;
|
|
104
|
+
try {
|
|
105
|
+
metadata = (0, parser_1.parseSchema)(options.typeDefs);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
109
|
+
throw new SchemaParseError(`Failed to parse schema: ${message}`);
|
|
110
|
+
}
|
|
111
|
+
// 2. Validate output directory -------------------------------------------
|
|
112
|
+
const outDir = path.dirname(path.resolve(options.outFile));
|
|
113
|
+
if (!fs.existsSync(outDir))
|
|
114
|
+
throw new OutputPathError(`Output directory does not exist: ${outDir}`);
|
|
115
|
+
// 3. Validate non-empty schema -------------------------------------------
|
|
116
|
+
if (metadata.nodes.size === 0)
|
|
117
|
+
throw new EmptySchemaError('Schema contains no node types. At least one type is required.');
|
|
118
|
+
// 4. Build resolved config -----------------------------------------------
|
|
119
|
+
const config = {
|
|
120
|
+
stringMatchesFilter: options.config?.stringMatchesFilter ?? true,
|
|
121
|
+
formatOutput: options.config?.formatOutput ?? true,
|
|
122
|
+
prettierConfig: options.config?.prettierConfig,
|
|
123
|
+
header: options.config?.header,
|
|
124
|
+
};
|
|
125
|
+
// 5. Emit sections in order ----------------------------------------------
|
|
126
|
+
const packageName = options.config?.packageName ?? 'grafeo-ogm';
|
|
127
|
+
const sections = [
|
|
128
|
+
(0, utility_types_1.emitHeader)(config, packageName),
|
|
129
|
+
(0, utility_types_1.emitImports)(packageName),
|
|
130
|
+
(0, utility_types_1.emitUtilityTypes)(),
|
|
131
|
+
(0, enum_emitter_1.emitEnums)(metadata),
|
|
132
|
+
(0, node_type_emitter_1.emitNodeTypes)(metadata),
|
|
133
|
+
(0, interface_emitter_1.emitInterfaceTypes)(metadata),
|
|
134
|
+
(0, where_emitter_1.emitWhereTypes)(metadata, config),
|
|
135
|
+
(0, connection_emitter_1.emitConnectionWhereTypes)(metadata),
|
|
136
|
+
(0, input_emitter_1.emitInputTypes)(metadata),
|
|
137
|
+
(0, sort_options_emitter_1.emitSortOptions)(metadata),
|
|
138
|
+
(0, connection_emitter_1.emitConnectionEdgeTypes)(metadata),
|
|
139
|
+
(0, aggregation_emitter_1.emitAggregationTypes)(metadata),
|
|
140
|
+
(0, mutation_response_emitter_1.emitMutationResponseTypes)(metadata),
|
|
141
|
+
(0, fulltext_emitter_1.emitFulltextTypes)(metadata),
|
|
142
|
+
(0, select_fields_emitter_1.emitSelectFieldTypes)(metadata),
|
|
143
|
+
(0, select_result_emitter_1.emitSelectResultType)(),
|
|
144
|
+
(0, model_map_emitter_1.emitModelDeclarations)(metadata),
|
|
145
|
+
(0, model_map_emitter_1.emitModelMap)(metadata),
|
|
146
|
+
(0, model_map_emitter_1.emitInterfaceModelMap)(metadata),
|
|
147
|
+
];
|
|
148
|
+
// 6. Join sections -------------------------------------------------------
|
|
149
|
+
let output = sections.join('\n\n');
|
|
150
|
+
// 7. Count types ---------------------------------------------------------
|
|
151
|
+
const typeCount = countExportedTypes(output);
|
|
152
|
+
// 8. Format with prettier (optional) -------------------------------------
|
|
153
|
+
if (config.formatOutput)
|
|
154
|
+
try {
|
|
155
|
+
const prettier = await Promise.resolve().then(() => __importStar(require('prettier')));
|
|
156
|
+
output = await prettier.format(output, {
|
|
157
|
+
parser: 'typescript',
|
|
158
|
+
...config.prettierConfig,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
warnings.push({
|
|
163
|
+
code: 'UNSUPPORTED_TYPE',
|
|
164
|
+
message: 'Prettier formatting failed; output written without formatting.',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// 9. Write to disk -------------------------------------------------------
|
|
168
|
+
const resolvedPath = path.resolve(options.outFile);
|
|
169
|
+
fs.writeFileSync(resolvedPath, output, 'utf-8');
|
|
170
|
+
// 10. Return result ------------------------------------------------------
|
|
171
|
+
const durationMs = Math.round(performance.now() - start);
|
|
172
|
+
const fileSize = Buffer.byteLength(output, 'utf-8');
|
|
173
|
+
return {
|
|
174
|
+
outputPath: resolvedPath,
|
|
175
|
+
typeCount,
|
|
176
|
+
fileSize,
|
|
177
|
+
durationMs,
|
|
178
|
+
warnings,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=generate-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-types.js","sourceRoot":"","sources":["../../../src/generator/generate-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateTypes = void 0;
|
|
4
|
+
var generate_types_1 = require("./generate-types");
|
|
5
|
+
Object.defineProperty(exports, "generateTypes", { enumerable: true, get: function () { return generate_types_1.generateTypes; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SchemaMetadata } from '../../schema/types';
|
|
2
|
+
/**
|
|
3
|
+
* Emits the shared aggregate selection types (`IdAggregateSelection`, etc.)
|
|
4
|
+
* followed by one `<Node>AggregateSelection` type per node in the schema.
|
|
5
|
+
*/
|
|
6
|
+
export declare function emitAggregationTypes(schema: SchemaMetadata): string;
|
|
7
|
+
//# sourceMappingURL=aggregation-emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregation-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/aggregation-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAyD5B;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA0BnE"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emitAggregationTypes = emitAggregationTypes;
|
|
4
|
+
const helpers_1 = require("./helpers");
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Scalar → aggregate selection type mapping
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
const SCALAR_AGGREGATE_MAP = {
|
|
9
|
+
ID: 'IdAggregateSelection',
|
|
10
|
+
String: 'StringAggregateSelection',
|
|
11
|
+
Int: 'IntAggregateSelection',
|
|
12
|
+
Float: 'FloatAggregateSelection',
|
|
13
|
+
DateTime: 'DateTimeAggregateSelection',
|
|
14
|
+
};
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Shared aggregate selection types (schema-independent)
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
const SHARED_AGGREGATE_TYPES = `export type IdAggregateSelection = {
|
|
19
|
+
__typename?: "IDAggregateSelection";
|
|
20
|
+
shortest?: Maybe<Scalars["ID"]["output"]>;
|
|
21
|
+
longest?: Maybe<Scalars["ID"]["output"]>;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export type StringAggregateSelection = {
|
|
25
|
+
__typename?: "StringAggregateSelection";
|
|
26
|
+
shortest?: Maybe<Scalars["String"]["output"]>;
|
|
27
|
+
longest?: Maybe<Scalars["String"]["output"]>;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type IntAggregateSelection = {
|
|
31
|
+
__typename?: "IntAggregateSelection";
|
|
32
|
+
max?: Maybe<Scalars["Int"]["output"]>;
|
|
33
|
+
min?: Maybe<Scalars["Int"]["output"]>;
|
|
34
|
+
average?: Maybe<Scalars["Float"]["output"]>;
|
|
35
|
+
sum?: Maybe<Scalars["Int"]["output"]>;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export type FloatAggregateSelection = {
|
|
39
|
+
__typename?: "FloatAggregateSelection";
|
|
40
|
+
max?: Maybe<Scalars["Float"]["output"]>;
|
|
41
|
+
min?: Maybe<Scalars["Float"]["output"]>;
|
|
42
|
+
average?: Maybe<Scalars["Float"]["output"]>;
|
|
43
|
+
sum?: Maybe<Scalars["Float"]["output"]>;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export type DateTimeAggregateSelection = {
|
|
47
|
+
__typename?: "DateTimeAggregateSelection";
|
|
48
|
+
min?: Maybe<Scalars["DateTime"]["output"]>;
|
|
49
|
+
max?: Maybe<Scalars["DateTime"]["output"]>;
|
|
50
|
+
};`;
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Public API
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
/**
|
|
55
|
+
* Emits the shared aggregate selection types (`IdAggregateSelection`, etc.)
|
|
56
|
+
* followed by one `<Node>AggregateSelection` type per node in the schema.
|
|
57
|
+
*/
|
|
58
|
+
function emitAggregationTypes(schema) {
|
|
59
|
+
const blocks = [SHARED_AGGREGATE_TYPES];
|
|
60
|
+
const sortedNodes = [...schema.nodes.entries()].sort(([a], [b]) => a.localeCompare(b));
|
|
61
|
+
for (const [, node] of sortedNodes) {
|
|
62
|
+
blocks.push(emitNodeAggregateSelection(node, schema));
|
|
63
|
+
// Relationship aggregation selection + aggregate input types
|
|
64
|
+
for (const [, rel] of node.relationships) {
|
|
65
|
+
blocks.push(emitRelationshipAggregationSelection(node, rel, schema));
|
|
66
|
+
blocks.push(emitRelationshipAggregateInput(node, rel));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Interface relationship aggregate input types
|
|
70
|
+
const sortedInterfaces = [...schema.interfaces.entries()].sort(([a], [b]) => a.localeCompare(b));
|
|
71
|
+
for (const [, iface] of sortedInterfaces)
|
|
72
|
+
for (const [, rel] of iface.relationships)
|
|
73
|
+
blocks.push(emitInterfaceRelAggregateInput(iface.name, rel));
|
|
74
|
+
return blocks.join('\n\n');
|
|
75
|
+
}
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Helpers
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
/**
|
|
80
|
+
* Emits a `<Parent><Target><Field>AggregationSelection` type for a relationship.
|
|
81
|
+
*
|
|
82
|
+
* Example: `ChartChartHasParentChartAggregationSelection = { count: ...; node?: ...; }`
|
|
83
|
+
*/
|
|
84
|
+
function emitRelationshipAggregationSelection(parent, rel, schema) {
|
|
85
|
+
const pascalField = (0, helpers_1.toPascalCase)(rel.fieldName);
|
|
86
|
+
const typeName = `${parent.typeName}${rel.target}${pascalField}AggregationSelection`;
|
|
87
|
+
const nodeAggType = `${typeName.replace('AggregationSelection', '')}NodeAggregateSelection`;
|
|
88
|
+
const lines = [
|
|
89
|
+
` __typename?: "${typeName}";`,
|
|
90
|
+
` count: Scalars["Int"]["output"];`,
|
|
91
|
+
` node?: Maybe<${nodeAggType}>;`,
|
|
92
|
+
];
|
|
93
|
+
// If relationship has properties, add edge aggregate
|
|
94
|
+
if (rel.properties) {
|
|
95
|
+
const edgeAggType = `${typeName.replace('AggregationSelection', '')}EdgeAggregateSelection`;
|
|
96
|
+
lines.push(` edge?: Maybe<${edgeAggType}>;`);
|
|
97
|
+
}
|
|
98
|
+
const block = `export type ${typeName} = {\n${lines.join('\n')}\n};`;
|
|
99
|
+
// Also emit the NodeAggregateSelection type (scalar properties of the target)
|
|
100
|
+
const targetNode = schema.nodes.get(rel.target);
|
|
101
|
+
const nodeLines = [` __typename?: "${nodeAggType}";`];
|
|
102
|
+
if (targetNode)
|
|
103
|
+
for (const [name, prop] of targetNode.properties) {
|
|
104
|
+
if (prop.isCypher)
|
|
105
|
+
continue;
|
|
106
|
+
const aggType = SCALAR_AGGREGATE_MAP[prop.type];
|
|
107
|
+
if (!aggType)
|
|
108
|
+
continue;
|
|
109
|
+
if (schema.enums.has(prop.type))
|
|
110
|
+
continue;
|
|
111
|
+
nodeLines.push(` ${name}: ${aggType};`);
|
|
112
|
+
}
|
|
113
|
+
const nodeBlock = `export type ${nodeAggType} = {\n${nodeLines.join('\n')}\n};`;
|
|
114
|
+
// Emit edge aggregate selection if relationship has properties
|
|
115
|
+
if (rel.properties) {
|
|
116
|
+
const edgeAggType = `${typeName.replace('AggregationSelection', '')}EdgeAggregateSelection`;
|
|
117
|
+
const edgeLines = [` __typename?: "${edgeAggType}";`];
|
|
118
|
+
const relProps = schema.relationshipProperties.get(rel.properties);
|
|
119
|
+
if (relProps)
|
|
120
|
+
for (const [name, prop] of relProps.properties) {
|
|
121
|
+
if (prop.isCypher)
|
|
122
|
+
continue;
|
|
123
|
+
const aggType = SCALAR_AGGREGATE_MAP[prop.type];
|
|
124
|
+
if (!aggType)
|
|
125
|
+
continue;
|
|
126
|
+
edgeLines.push(` ${name}: ${aggType};`);
|
|
127
|
+
}
|
|
128
|
+
const edgeBlock = `export type ${edgeAggType} = {\n${edgeLines.join('\n')}\n};`;
|
|
129
|
+
return `${block}\n\n${nodeBlock}\n\n${edgeBlock}`;
|
|
130
|
+
}
|
|
131
|
+
return `${block}\n\n${nodeBlock}`;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Emits a `<Parent><Field>AggregateInput` type for Where aggregate filters.
|
|
135
|
+
*
|
|
136
|
+
* Example: `ChartHasParentChartAggregateInput = { count?: ...; count_LT?: ...; ... }`
|
|
137
|
+
*/
|
|
138
|
+
function emitRelationshipAggregateInput(parent, rel) {
|
|
139
|
+
const pascalField = (0, helpers_1.toPascalCase)(rel.fieldName);
|
|
140
|
+
const typeName = `${parent.typeName}${pascalField}AggregateInput`;
|
|
141
|
+
const lines = [
|
|
142
|
+
` count?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
143
|
+
` count_LT?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
144
|
+
` count_LTE?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
145
|
+
` count_GT?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
146
|
+
` count_GTE?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
147
|
+
` AND?: InputMaybe<Array<${typeName}>>;`,
|
|
148
|
+
` OR?: InputMaybe<Array<${typeName}>>;`,
|
|
149
|
+
` NOT?: InputMaybe<${typeName}>;`,
|
|
150
|
+
];
|
|
151
|
+
return `export type ${typeName} = {\n${lines.join('\n')}\n};`;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Emits an aggregate input type for an interface relationship.
|
|
155
|
+
* Same structure as node relationship aggregate inputs.
|
|
156
|
+
*/
|
|
157
|
+
function emitInterfaceRelAggregateInput(ifaceName, rel) {
|
|
158
|
+
const pascalField = (0, helpers_1.toPascalCase)(rel.fieldName);
|
|
159
|
+
const typeName = `${ifaceName}${pascalField}AggregateInput`;
|
|
160
|
+
const lines = [
|
|
161
|
+
` count?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
162
|
+
` count_LT?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
163
|
+
` count_LTE?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
164
|
+
` count_GT?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
165
|
+
` count_GTE?: InputMaybe<Scalars["Int"]["input"]>;`,
|
|
166
|
+
` AND?: InputMaybe<Array<${typeName}>>;`,
|
|
167
|
+
` OR?: InputMaybe<Array<${typeName}>>;`,
|
|
168
|
+
` NOT?: InputMaybe<${typeName}>;`,
|
|
169
|
+
];
|
|
170
|
+
return `export type ${typeName} = {\n${lines.join('\n')}\n};`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Emits a single `<Node>AggregateSelection` type with `count` followed by
|
|
174
|
+
* one entry per aggregatable scalar property.
|
|
175
|
+
*/
|
|
176
|
+
function emitNodeAggregateSelection(node, schema) {
|
|
177
|
+
const lines = [
|
|
178
|
+
` __typename?: "${node.typeName}AggregateSelection";`,
|
|
179
|
+
` count: Scalars["Int"]["output"];`,
|
|
180
|
+
];
|
|
181
|
+
for (const [name, prop] of node.properties) {
|
|
182
|
+
// Skip @cypher fields — computed, not stored
|
|
183
|
+
if (prop.isCypher)
|
|
184
|
+
continue;
|
|
185
|
+
const aggregateType = SCALAR_AGGREGATE_MAP[prop.type];
|
|
186
|
+
// Skip Booleans and enums — they have no aggregate selection
|
|
187
|
+
if (!aggregateType)
|
|
188
|
+
continue;
|
|
189
|
+
// Skip enum types explicitly
|
|
190
|
+
if (schema.enums.has(prop.type))
|
|
191
|
+
continue;
|
|
192
|
+
lines.push(` ${name}: ${aggregateType};`);
|
|
193
|
+
}
|
|
194
|
+
return `export type ${node.typeName}AggregateSelection = {\n${lines.join('\n')}\n};`;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=aggregation-emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregation-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/aggregation-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SchemaMetadata } from '../../schema/types';
|
|
2
|
+
/**
|
|
3
|
+
* Emits `{Parent}{PascalField}ConnectionWhere` types for every relationship
|
|
4
|
+
* on every node in the schema.
|
|
5
|
+
*
|
|
6
|
+
* Each ConnectionWhere type contains:
|
|
7
|
+
* - `node` / `node_NOT` — target node Where filter
|
|
8
|
+
* - `edge` / `edge_NOT` — edge property Where filter (only when relationship has properties)
|
|
9
|
+
* - `AND` / `OR` / `NOT` — logical operators
|
|
10
|
+
*/
|
|
11
|
+
export declare function emitConnectionWhereTypes(schema: SchemaMetadata): string;
|
|
12
|
+
/**
|
|
13
|
+
* Emits Connection, Relationship (edge), and PageInfo types.
|
|
14
|
+
*
|
|
15
|
+
* For each relationship on each node:
|
|
16
|
+
* - `{Parent}{PascalField}Connection` — edges array, totalCount, pageInfo
|
|
17
|
+
* - `{Parent}{PascalField}Relationship` — cursor, node, and optional properties
|
|
18
|
+
*
|
|
19
|
+
* Also emits the `PageInfo` type exactly once.
|
|
20
|
+
*/
|
|
21
|
+
export declare function emitConnectionEdgeTypes(schema: SchemaMetadata): string;
|
|
22
|
+
//# sourceMappingURL=connection-emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/connection-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAO5B;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA2CvE;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA8CtE"}
|