hikoutei 0.2.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.ja.md +135 -0
- package/README.ko.md +138 -0
- package/README.md +143 -0
- package/apps-script/gateway/Code.gs +412 -0
- package/dist/adapter/persistence/contracts/index.d.ts +3 -0
- package/dist/adapter/persistence/contracts/index.d.ts.map +1 -0
- package/dist/adapter/persistence/contracts/index.js +3 -0
- package/dist/adapter/persistence/contracts/index.js.map +1 -0
- package/dist/adapter/persistence/contracts/sql.d.ts +50 -0
- package/dist/adapter/persistence/contracts/sql.d.ts.map +1 -0
- package/dist/adapter/persistence/contracts/sql.js +9 -0
- package/dist/adapter/persistence/contracts/sql.js.map +1 -0
- package/dist/adapter/persistence/index.d.ts +2 -0
- package/dist/adapter/persistence/index.d.ts.map +1 -0
- package/dist/adapter/persistence/index.js +2 -0
- package/dist/adapter/persistence/index.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts +53 -0
- package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js +105 -0
- package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +39 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js +54 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts +38 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js +55 -0
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/index.d.ts +16 -0
- package/dist/adapter/persistence/providers/mikro-orm/index.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/index.js +9 -0
- package/dist/adapter/persistence/providers/mikro-orm/index.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts +27 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +67 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts +19 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js +67 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts +78 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js +121 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.d.ts +20 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.js +125 -0
- package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +42 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +51 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +22 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js +12 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +42 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +161 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts +3 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +692 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts +29 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +538 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts +12 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js +190 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +23 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +166 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts +50 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js +60 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts +44 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js +40 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts +7 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +47 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts +5 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js +54 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts +5 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js +2 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts +10 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js +35 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts +67 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +204 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +78 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +343 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +4 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/orm/api/TypedSheetsOrm.d.ts +71 -0
- package/dist/application/orm/api/TypedSheetsOrm.d.ts.map +1 -0
- package/dist/application/orm/api/TypedSheetsOrm.js +116 -0
- package/dist/application/orm/api/TypedSheetsOrm.js.map +1 -0
- package/dist/application/orm/api/contracts.d.ts +118 -0
- package/dist/application/orm/api/contracts.d.ts.map +1 -0
- package/dist/application/orm/api/contracts.js +21 -0
- package/dist/application/orm/api/contracts.js.map +1 -0
- package/dist/application/orm/errors.d.ts +35 -0
- package/dist/application/orm/errors.d.ts.map +1 -0
- package/dist/application/orm/errors.js +35 -0
- package/dist/application/orm/errors.js.map +1 -0
- package/dist/application/orm/index.d.ts +13 -0
- package/dist/application/orm/index.d.ts.map +1 -0
- package/dist/application/orm/index.js +7 -0
- package/dist/application/orm/index.js.map +1 -0
- package/dist/application/orm/mapping/contracts.d.ts +113 -0
- package/dist/application/orm/mapping/contracts.d.ts.map +1 -0
- package/dist/application/orm/mapping/contracts.js +8 -0
- package/dist/application/orm/mapping/contracts.js.map +1 -0
- package/dist/application/orm/mapping/definition.d.ts +16 -0
- package/dist/application/orm/mapping/definition.d.ts.map +1 -0
- package/dist/application/orm/mapping/definition.js +145 -0
- package/dist/application/orm/mapping/definition.js.map +1 -0
- package/dist/application/orm/mapping/entityMapping.d.ts +13 -0
- package/dist/application/orm/mapping/entityMapping.d.ts.map +1 -0
- package/dist/application/orm/mapping/entityMapping.js +13 -0
- package/dist/application/orm/mapping/entityMapping.js.map +1 -0
- package/dist/application/orm/mapping/identity.d.ts +14 -0
- package/dist/application/orm/mapping/identity.d.ts.map +1 -0
- package/dist/application/orm/mapping/identity.js +37 -0
- package/dist/application/orm/mapping/identity.js.map +1 -0
- package/dist/application/orm/mapping/observationMapping.d.ts +42 -0
- package/dist/application/orm/mapping/observationMapping.d.ts.map +1 -0
- package/dist/application/orm/mapping/observationMapping.js +65 -0
- package/dist/application/orm/mapping/observationMapping.js.map +1 -0
- package/dist/application/orm/mapping/projection.d.ts +22 -0
- package/dist/application/orm/mapping/projection.d.ts.map +1 -0
- package/dist/application/orm/mapping/projection.js +74 -0
- package/dist/application/orm/mapping/projection.js.map +1 -0
- package/dist/application/orm/mapping/registry.d.ts +15 -0
- package/dist/application/orm/mapping/registry.d.ts.map +1 -0
- package/dist/application/orm/mapping/registry.js +38 -0
- package/dist/application/orm/mapping/registry.js.map +1 -0
- package/dist/application/orm/mapping/values.d.ts +17 -0
- package/dist/application/orm/mapping/values.d.ts.map +1 -0
- package/dist/application/orm/mapping/values.js +141 -0
- package/dist/application/orm/mapping/values.js.map +1 -0
- package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +28 -0
- package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -0
- package/dist/application/orm/persistence/flush/flushCoordinator.js +170 -0
- package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -0
- package/dist/application/orm/persistence/flush/mappedFlushCoordinator.d.ts +9 -0
- package/dist/application/orm/persistence/flush/mappedFlushCoordinator.d.ts.map +1 -0
- package/dist/application/orm/persistence/flush/mappedFlushCoordinator.js +8 -0
- package/dist/application/orm/persistence/flush/mappedFlushCoordinator.js.map +1 -0
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.d.ts +12 -0
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.d.ts.map +1 -0
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +134 -0
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -0
- package/dist/application/orm/persistence/projection/projectionEffects.d.ts +21 -0
- package/dist/application/orm/persistence/projection/projectionEffects.d.ts.map +1 -0
- package/dist/application/orm/persistence/projection/projectionEffects.js +203 -0
- package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -0
- package/dist/application/orm/persistence/support/businessKeys.d.ts +17 -0
- package/dist/application/orm/persistence/support/businessKeys.d.ts.map +1 -0
- package/dist/application/orm/persistence/support/businessKeys.js +72 -0
- package/dist/application/orm/persistence/support/businessKeys.js.map +1 -0
- package/dist/application/orm/persistence/support/canonicalState.d.ts +22 -0
- package/dist/application/orm/persistence/support/canonicalState.d.ts.map +1 -0
- package/dist/application/orm/persistence/support/canonicalState.js +88 -0
- package/dist/application/orm/persistence/support/canonicalState.js.map +1 -0
- package/dist/application/orm/persistence/support/contracts.d.ts +139 -0
- package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -0
- package/dist/application/orm/persistence/support/contracts.js +93 -0
- package/dist/application/orm/persistence/support/contracts.js.map +1 -0
- package/dist/application/orm/persistence/support/helpers.d.ts +32 -0
- package/dist/application/orm/persistence/support/helpers.d.ts.map +1 -0
- package/dist/application/orm/persistence/support/helpers.js +66 -0
- package/dist/application/orm/persistence/support/helpers.js.map +1 -0
- package/dist/application/orm/persistence/support/timing.d.ts +20 -0
- package/dist/application/orm/persistence/support/timing.d.ts.map +1 -0
- package/dist/application/orm/persistence/support/timing.js +55 -0
- package/dist/application/orm/persistence/support/timing.js.map +1 -0
- package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts +46 -0
- package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +1 -0
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js +93 -0
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +1 -0
- package/dist/application/sync/gateway/constants.d.ts +65 -0
- package/dist/application/sync/gateway/constants.d.ts.map +1 -0
- package/dist/application/sync/gateway/constants.js +57 -0
- package/dist/application/sync/gateway/constants.js.map +1 -0
- package/dist/application/sync/gateway/errors.d.ts +15 -0
- package/dist/application/sync/gateway/errors.d.ts.map +1 -0
- package/dist/application/sync/gateway/errors.js +16 -0
- package/dist/application/sync/gateway/errors.js.map +1 -0
- package/dist/application/sync/gateway/syncGateway.d.ts +313 -0
- package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -0
- package/dist/application/sync/gateway/syncGateway.js +202 -0
- package/dist/application/sync/gateway/syncGateway.js.map +1 -0
- package/dist/application/sync/gateway/validation.d.ts +17 -0
- package/dist/application/sync/gateway/validation.d.ts.map +1 -0
- package/dist/application/sync/gateway/validation.js +60 -0
- package/dist/application/sync/gateway/validation.js.map +1 -0
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts +72 -0
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -0
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.js +272 -0
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.js.map +1 -0
- package/dist/application/sync/index.d.ts +16 -0
- package/dist/application/sync/index.d.ts.map +1 -0
- package/dist/application/sync/index.js +9 -0
- package/dist/application/sync/index.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +106 -0
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +297 -0
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +100 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js +345 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +46 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +63 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +20 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +102 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts +19 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +32 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +30 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +202 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts +17 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js +80 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +13 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +205 -0
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -0
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts +81 -0
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -0
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +245 -0
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -0
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts +77 -0
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -0
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +518 -0
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -0
- package/dist/application/sync/telemetry/syncTiming.d.ts +50 -0
- package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -0
- package/dist/application/sync/telemetry/syncTiming.js +22 -0
- package/dist/application/sync/telemetry/syncTiming.js.map +1 -0
- package/dist/domain/conflict/errors.d.ts +42 -0
- package/dist/domain/conflict/errors.d.ts.map +1 -0
- package/dist/domain/conflict/errors.js +36 -0
- package/dist/domain/conflict/errors.js.map +1 -0
- package/dist/domain/conflict/index.d.ts +5 -0
- package/dist/domain/conflict/index.d.ts.map +1 -0
- package/dist/domain/conflict/index.js +3 -0
- package/dist/domain/conflict/index.js.map +1 -0
- package/dist/domain/conflict/transitions.d.ts +52 -0
- package/dist/domain/conflict/transitions.d.ts.map +1 -0
- package/dist/domain/conflict/transitions.js +115 -0
- package/dist/domain/conflict/transitions.js.map +1 -0
- package/dist/domain/errors/evaluation.d.ts +13 -0
- package/dist/domain/errors/evaluation.d.ts.map +1 -0
- package/dist/domain/errors/evaluation.js +14 -0
- package/dist/domain/errors/evaluation.js.map +1 -0
- package/dist/domain/errors/identity.d.ts +12 -0
- package/dist/domain/errors/identity.d.ts.map +1 -0
- package/dist/domain/errors/identity.js +15 -0
- package/dist/domain/errors/identity.js.map +1 -0
- package/dist/domain/errors/index.d.ts +7 -0
- package/dist/domain/errors/index.d.ts.map +1 -0
- package/dist/domain/errors/index.js +5 -0
- package/dist/domain/errors/index.js.map +1 -0
- package/dist/domain/errors/stableEncoding.d.ts +7 -0
- package/dist/domain/errors/stableEncoding.d.ts.map +1 -0
- package/dist/domain/errors/stableEncoding.js +8 -0
- package/dist/domain/errors/stableEncoding.js.map +1 -0
- package/dist/domain/errors/types.d.ts +20 -0
- package/dist/domain/errors/types.d.ts.map +1 -0
- package/dist/domain/errors/types.js +18 -0
- package/dist/domain/errors/types.js.map +1 -0
- package/dist/domain/evaluate/constants.d.ts +55 -0
- package/dist/domain/evaluate/constants.d.ts.map +1 -0
- package/dist/domain/evaluate/constants.js +41 -0
- package/dist/domain/evaluate/constants.js.map +1 -0
- package/dist/domain/evaluate/contracts.d.ts +125 -0
- package/dist/domain/evaluate/contracts.d.ts.map +1 -0
- package/dist/domain/evaluate/contracts.js +8 -0
- package/dist/domain/evaluate/contracts.js.map +1 -0
- package/dist/domain/evaluate/evaluateBatch.d.ts +11 -0
- package/dist/domain/evaluate/evaluateBatch.d.ts.map +1 -0
- package/dist/domain/evaluate/evaluateBatch.js +91 -0
- package/dist/domain/evaluate/evaluateBatch.js.map +1 -0
- package/dist/domain/evaluate/fieldEvaluation.d.ts +14 -0
- package/dist/domain/evaluate/fieldEvaluation.d.ts.map +1 -0
- package/dist/domain/evaluate/fieldEvaluation.js +133 -0
- package/dist/domain/evaluate/fieldEvaluation.js.map +1 -0
- package/dist/domain/evaluate/identity.d.ts +21 -0
- package/dist/domain/evaluate/identity.d.ts.map +1 -0
- package/dist/domain/evaluate/identity.js +72 -0
- package/dist/domain/evaluate/identity.js.map +1 -0
- package/dist/domain/evaluate/index.d.ts +4 -0
- package/dist/domain/evaluate/index.d.ts.map +1 -0
- package/dist/domain/evaluate/index.js +3 -0
- package/dist/domain/evaluate/index.js.map +1 -0
- package/dist/domain/evaluate/preconditions.d.ts +30 -0
- package/dist/domain/evaluate/preconditions.d.ts.map +1 -0
- package/dist/domain/evaluate/preconditions.js +389 -0
- package/dist/domain/evaluate/preconditions.js.map +1 -0
- package/dist/domain/evaluate/quarantine.d.ts +15 -0
- package/dist/domain/evaluate/quarantine.d.ts.map +1 -0
- package/dist/domain/evaluate/quarantine.js +185 -0
- package/dist/domain/evaluate/quarantine.js.map +1 -0
- package/dist/domain/index.d.ts +7 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +7 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/model/constants.d.ts +73 -0
- package/dist/domain/model/constants.d.ts.map +1 -0
- package/dist/domain/model/constants.js +59 -0
- package/dist/domain/model/constants.js.map +1 -0
- package/dist/domain/model/index.d.ts +3 -0
- package/dist/domain/model/index.d.ts.map +1 -0
- package/dist/domain/model/index.js +2 -0
- package/dist/domain/model/index.js.map +1 -0
- package/dist/domain/model/types.d.ts +330 -0
- package/dist/domain/model/types.d.ts.map +1 -0
- package/dist/domain/model/types.js +8 -0
- package/dist/domain/model/types.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +3 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +3 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/storage/constants.d.ts +4 -0
- package/dist/infrastructure/storage/constants.d.ts.map +1 -0
- package/dist/infrastructure/storage/constants.js +4 -0
- package/dist/infrastructure/storage/constants.js.map +1 -0
- package/dist/infrastructure/storage/errors.d.ts +55 -0
- package/dist/infrastructure/storage/errors.d.ts.map +1 -0
- package/dist/infrastructure/storage/errors.js +58 -0
- package/dist/infrastructure/storage/errors.js.map +1 -0
- package/dist/infrastructure/storage/index.d.ts +23 -0
- package/dist/infrastructure/storage/index.d.ts.map +1 -0
- package/dist/infrastructure/storage/index.js +13 -0
- package/dist/infrastructure/storage/index.js.map +1 -0
- package/dist/infrastructure/storage/recovery/restoreRecovery.d.ts +64 -0
- package/dist/infrastructure/storage/recovery/restoreRecovery.d.ts.map +1 -0
- package/dist/infrastructure/storage/recovery/restoreRecovery.js +148 -0
- package/dist/infrastructure/storage/recovery/restoreRecovery.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/schema.d.ts +49 -0
- package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/schema.js +529 -0
- package/dist/infrastructure/storage/sqlite/schema.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts +5 -0
- package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/schemaTypes.js +2 -0
- package/dist/infrastructure/storage/sqlite/schemaTypes.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqlScript.d.ts +9 -0
- package/dist/infrastructure/storage/sqlite/sqlScript.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqlScript.js +122 -0
- package/dist/infrastructure/storage/sqlite/sqlScript.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqlState.d.ts +6 -0
- package/dist/infrastructure/storage/sqlite/sqlState.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqlState.js +14 -0
- package/dist/infrastructure/storage/sqlite/sqlState.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqlTransaction.d.ts +6 -0
- package/dist/infrastructure/storage/sqlite/sqlTransaction.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqlTransaction.js +24 -0
- package/dist/infrastructure/storage/sqlite/sqlTransaction.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqliteBridge.d.ts +44 -0
- package/dist/infrastructure/storage/sqlite/sqliteBridge.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/sqliteBridge.js +66 -0
- package/dist/infrastructure/storage/sqlite/sqliteBridge.js.map +1 -0
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts +101 -0
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +417 -0
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationAudit.d.ts +16 -0
- package/dist/infrastructure/storage/state/observation/observationAudit.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationAudit.js +85 -0
- package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts +31 -0
- package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationCanonical.js +439 -0
- package/dist/infrastructure/storage/state/observation/observationCanonical.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationConstants.d.ts +53 -0
- package/dist/infrastructure/storage/state/observation/observationConstants.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationConstants.js +41 -0
- package/dist/infrastructure/storage/state/observation/observationConstants.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationLedger.d.ts +49 -0
- package/dist/infrastructure/storage/state/observation/observationLedger.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationLedger.js +537 -0
- package/dist/infrastructure/storage/state/observation/observationLedger.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts +15 -0
- package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationQuarantine.js +100 -0
- package/dist/infrastructure/storage/state/observation/observationQuarantine.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +124 -0
- package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationTypes.js +13 -0
- package/dist/infrastructure/storage/state/observation/observationTypes.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationValidation.d.ts +28 -0
- package/dist/infrastructure/storage/state/observation/observationValidation.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationValidation.js +223 -0
- package/dist/infrastructure/storage/state/observation/observationValidation.js.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationWriter.d.ts +28 -0
- package/dist/infrastructure/storage/state/observation/observationWriter.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/observation/observationWriter.js +293 -0
- package/dist/infrastructure/storage/state/observation/observationWriter.js.map +1 -0
- package/dist/infrastructure/storage/state/readonly/readOnlyObservation.d.ts +58 -0
- package/dist/infrastructure/storage/state/readonly/readOnlyObservation.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/readonly/readOnlyObservation.js +195 -0
- package/dist/infrastructure/storage/state/readonly/readOnlyObservation.js.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts +31 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +563 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts +118 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js +18 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts +23 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js +84 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +16 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +97 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +137 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +396 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +101 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +9 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +21 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +184 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +25 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +158 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -0
- package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +69 -0
- package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/shared/syncRegistry.js +272 -0
- package/dist/infrastructure/storage/sync/shared/syncRegistry.js.map +1 -0
- package/dist/infrastructure/storage/sync/shared/writerLease.d.ts +90 -0
- package/dist/infrastructure/storage/sync/shared/writerLease.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/shared/writerLease.js +282 -0
- package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -0
- package/dist/shared/constants.d.ts +8 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +8 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/encoding/constants.d.ts +45 -0
- package/dist/shared/encoding/constants.d.ts.map +1 -0
- package/dist/shared/encoding/constants.js +37 -0
- package/dist/shared/encoding/constants.js.map +1 -0
- package/dist/shared/encoding/index.d.ts +6 -0
- package/dist/shared/encoding/index.d.ts.map +1 -0
- package/dist/shared/encoding/index.js +4 -0
- package/dist/shared/encoding/index.js.map +1 -0
- package/dist/shared/encoding/stableEncode.d.ts +34 -0
- package/dist/shared/encoding/stableEncode.d.ts.map +1 -0
- package/dist/shared/encoding/stableEncode.js +210 -0
- package/dist/shared/encoding/stableEncode.js.map +1 -0
- package/dist/shared/encoding/typeGuards.d.ts +15 -0
- package/dist/shared/encoding/typeGuards.d.ts.map +1 -0
- package/dist/shared/encoding/typeGuards.js +11 -0
- package/dist/shared/encoding/typeGuards.js.map +1 -0
- package/dist/shared/encoding/types.d.ts +52 -0
- package/dist/shared/encoding/types.d.ts.map +1 -0
- package/dist/shared/encoding/types.js +8 -0
- package/dist/shared/encoding/types.js.map +1 -0
- package/dist/shared/index.d.ts +6 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +6 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/state/constants.d.ts +16 -0
- package/dist/shared/state/constants.d.ts.map +1 -0
- package/dist/shared/state/constants.js +16 -0
- package/dist/shared/state/constants.js.map +1 -0
- package/dist/shared/state/index.d.ts +3 -0
- package/dist/shared/state/index.d.ts.map +1 -0
- package/dist/shared/state/index.js +2 -0
- package/dist/shared/state/index.js.map +1 -0
- package/dist/shared/state/types.d.ts +23 -0
- package/dist/shared/state/types.d.ts.map +1 -0
- package/dist/shared/state/types.js +2 -0
- package/dist/shared/state/types.js.map +1 -0
- package/dist/shared/validation.d.ts +9 -0
- package/dist/shared/validation.d.ts.map +1 -0
- package/dist/shared/validation.js +25 -0
- package/dist/shared/validation.js.map +1 -0
- package/docs/architecture.md +72 -0
- package/docs/code-guidelines.md +256 -0
- package/docs/development.md +48 -0
- package/docs/git-workflow.md +224 -0
- package/docs/mikro-orm-adapter-spike.md +248 -0
- package/docs/quick-start.md +102 -0
- package/docs/sql-layer-plan.md +59 -0
- package/docs/sync-bulk-write-benchmark.md +1036 -0
- package/docs/sync-observability.md +71 -0
- package/docs/task-queue-write-model.md +640 -0
- package/docs/typed-sheets-mvp-scope-2026-06-29.md +490 -0
- package/docs/typed-sheets-plan.md +417 -0
- package/docs/write-and-synchronization-flow.md +71 -0
- package/package.json +68 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ManddarinShop
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.ja.md
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
[English](README.md) | [한국어](README.ko.md)
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
# Hikoutei
|
|
6
|
+
|
|
7
|
+
**Google Sheets を利用する MVP 向けの型付きリポジトリと安全な書き込みレイヤー**
|
|
8
|
+
|
|
9
|
+
<a href="https://www.npmjs.com/package/hikoutei">npm パッケージ</a> ·
|
|
10
|
+
<a href="https://github.com/ManddarinShop/Hikoutei/issues">Issues</a> ·
|
|
11
|
+
<a href="apps-script/gateway/Code.gs">Apps Script Gateway</a>
|
|
12
|
+
|
|
13
|
+
[](https://www.npmjs.com/package/hikoutei)
|
|
14
|
+
[](LICENSE)
|
|
15
|
+
[](https://www.typescriptlang.org/)
|
|
16
|
+
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
Hikoutei は、TypeScript と Node.js のアプリケーションで Google Sheets を
|
|
20
|
+
MVP や社内ワークフローの人間向けの画面として利用できるようにします。
|
|
21
|
+
アプリケーションは型付きエンティティとローカル SQLite を使い、付属の
|
|
22
|
+
Apps Script Gateway を通して変更を Google Sheets へ非同期に届けられます。
|
|
23
|
+
|
|
24
|
+
Hikoutei の対象は意図的に限定されています。汎用データベースの代替、
|
|
25
|
+
Prisma/JPA のクローン、汎用 Google Sheets API ラッパーを目的としていません。
|
|
26
|
+
|
|
27
|
+
## Hikoutei が提供するもの
|
|
28
|
+
|
|
29
|
+
- エンティティ中心のライフサイクル: 作成、検索、変更、永続化、削除、flush。
|
|
30
|
+
- Sheet データに対する型付きフィールドマッピングとランタイム検証。
|
|
31
|
+
- リモートのスプレッドシート要求を待たないローカル SQLite の読み取り。
|
|
32
|
+
- 人による確認や軽い共同作業に使える非同期 Google Sheets ビュー。
|
|
33
|
+
- 予期しないスキーマ変更や新しいデータを上書きする問題への保護。
|
|
34
|
+
|
|
35
|
+
## インストール
|
|
36
|
+
|
|
37
|
+
プロジェクトと npm パッケージ名は `hikoutei` です。
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
npm install hikoutei @mikro-orm/core @mikro-orm/sql
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
MikroORM パッケージはルートパッケージの optional peer dependency ですが、
|
|
44
|
+
Hikoutei の組み込み SQLite アダプターを使う場合は必要です。
|
|
45
|
+
|
|
46
|
+
## クイックスタート
|
|
47
|
+
|
|
48
|
+
エンティティマッピングを定義したら、リクエスト単位の manager でエンティティを
|
|
49
|
+
操作します。完全なマッピングと Gateway の設定は
|
|
50
|
+
[クイックスタートガイド](docs/quick-start.md)を参照してください。
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
import { initializeMappedTypedSheetsOrm } from "hikoutei/mikro-orm";
|
|
54
|
+
import { User } from "./entities/User.js";
|
|
55
|
+
import { userMapping } from "./mappings/userMapping.js";
|
|
56
|
+
|
|
57
|
+
const hikoutei = await initializeMappedTypedSheetsOrm({
|
|
58
|
+
dbName: "./hikoutei.sqlite",
|
|
59
|
+
entities: [User],
|
|
60
|
+
mappings: [userMapping],
|
|
61
|
+
writer: { writerId: "users-service" },
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const em = hikoutei.em.fork();
|
|
65
|
+
const user = em.create(User, { id: "u1", name: "Ada" });
|
|
66
|
+
em.persist(user);
|
|
67
|
+
await em.flush();
|
|
68
|
+
|
|
69
|
+
user.name = "Ada Lovelace";
|
|
70
|
+
await em.flush();
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`flush()` はローカルのアプリケーション状態を更新し、設定済みの Sheet ビューへ
|
|
74
|
+
反映する作業を予約します。リモートへの配信は非同期なので、[設定ガイド](docs/quick-start.md)
|
|
75
|
+
に従って sync worker を実行し、Gateway をプロビジョニングしてください。
|
|
76
|
+
|
|
77
|
+
## Hikoutei が適しているケース
|
|
78
|
+
|
|
79
|
+
- スプレッドシートがプロダクトの業務フローの一部である MVP とプロトタイプ。
|
|
80
|
+
- 社内ツールと低トラフィックの管理アプリケーション。
|
|
81
|
+
- 型付きのアプリケーションデータを保ちながら、Sheets を人が簡単に確認したい
|
|
82
|
+
チーム。
|
|
83
|
+
- ローカル SQLite を使うことができ、Sheets の非同期更新を受け入れられるサービス。
|
|
84
|
+
|
|
85
|
+
## 別のツールを選ぶべきケース
|
|
86
|
+
|
|
87
|
+
次の要件がある場合は、通常のデータベースと Google API の直接利用を検討してください。
|
|
88
|
+
|
|
89
|
+
- 複数行または複数サービスにまたがる強いトランザクション。
|
|
90
|
+
- 高い書き込みスループット、または多数の同時書き込み。
|
|
91
|
+
- 複雑なクエリ、JOIN、レポート処理。
|
|
92
|
+
- マルチサーバーまたはマルチリージョンの調整。
|
|
93
|
+
- Google Sheets で即時の read-after-write 整合性が必要。
|
|
94
|
+
- Google Sheets をアプリケーションの主データベースにする必要がある。
|
|
95
|
+
|
|
96
|
+
## Google Sheets の設定
|
|
97
|
+
|
|
98
|
+
1. サーバーアプリケーションでエンティティと Sheet のマッピングを定義します。
|
|
99
|
+
2. [`apps-script/gateway/Code.gs`](apps-script/gateway/Code.gs) を Google Apps
|
|
100
|
+
Script Web App としてデプロイします。
|
|
101
|
+
3. サーバーから登録済みのタブと範囲をプロビジョニングします。
|
|
102
|
+
4. 保留中の変更を配信する sync worker を実行します。
|
|
103
|
+
|
|
104
|
+
Gateway のシークレットはサーバーだけに保管してください。ブラウザコードに
|
|
105
|
+
含めたり、Git にコミットしたりしないでください。
|
|
106
|
+
|
|
107
|
+
## ドキュメント
|
|
108
|
+
|
|
109
|
+
- [クイックスタート](docs/quick-start.md) — インストール、マッピング、Gateway 設定。
|
|
110
|
+
- [アーキテクチャ](docs/architecture.md) — ローカルストアと Sheet ビューの関係。
|
|
111
|
+
- [書き込みと同期の流れ](docs/write-and-synchronization-flow.md) — 非同期配信と復旧動作。
|
|
112
|
+
- [開発ガイド](docs/development.md) — ローカル開発とテストコマンド。
|
|
113
|
+
- [ベンチマーク記録](docs/sync-bulk-write-benchmark.md) — 日付ごとの測定結果と制約。
|
|
114
|
+
|
|
115
|
+
## 制限事項
|
|
116
|
+
|
|
117
|
+
- Google Sheets にはクォータ、レイテンシー、Apps Script の実行時間制限があります。
|
|
118
|
+
- Sheet の更新は非同期なので、アプリケーションはローカル状態を読み取るべきです。
|
|
119
|
+
- SQLite はサービスにローカルなもので、分散調整レイヤーではありません。
|
|
120
|
+
- スキーマ変更、手動編集、競合する変更に対する運用方針は、アプリケーション側で
|
|
121
|
+
別途決める必要があります。
|
|
122
|
+
|
|
123
|
+
## ロードマップ
|
|
124
|
+
|
|
125
|
+
- Google Sheets から意図的なユーザー編集を取り込む機能を完成させる。
|
|
126
|
+
- update/delete の競合処理と表示を改善する。
|
|
127
|
+
- レジストリと Apps Script デプロイ用のセットアップツールを追加する。
|
|
128
|
+
- 公開パッケージのリリースを安定化する。
|
|
129
|
+
|
|
130
|
+
現在の作業については [open issues](https://github.com/ManddarinShop/Hikoutei/issues)
|
|
131
|
+
を参照してください。
|
|
132
|
+
|
|
133
|
+
## ライセンス
|
|
134
|
+
|
|
135
|
+
Hikoutei は [MIT License](LICENSE) の下で公開されています。
|
package/README.ko.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
[English](README.md) | [日本語](README.ja.md)
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
# Hikoutei
|
|
6
|
+
|
|
7
|
+
**Google Sheets 기반 MVP를 위한 타입 안전 리포지토리 및 안전한 쓰기 계층**
|
|
8
|
+
|
|
9
|
+
<a href="https://www.npmjs.com/package/hikoutei">npm 패키지</a> ·
|
|
10
|
+
<a href="https://github.com/ManddarinShop/Hikoutei/issues">이슈</a> ·
|
|
11
|
+
<a href="apps-script/gateway/Code.gs">Apps Script Gateway</a>
|
|
12
|
+
|
|
13
|
+
[](https://www.npmjs.com/package/hikoutei)
|
|
14
|
+
[](LICENSE)
|
|
15
|
+
[](https://www.typescriptlang.org/)
|
|
16
|
+
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
Hikoutei는 TypeScript와 Node.js 애플리케이션에서 Google Sheets를 MVP 또는
|
|
20
|
+
내부 업무 흐름의 사람이 읽기 쉬운 화면으로 사용할 수 있게 합니다. 애플리케이션은
|
|
21
|
+
타입이 지정된 엔티티와 로컬 SQLite를 사용하고, 포함된 Apps Script Gateway를
|
|
22
|
+
통해 변경 내용을 Google Sheets에 비동기적으로 전달할 수 있습니다.
|
|
23
|
+
|
|
24
|
+
Hikoutei의 범위는 의도적으로 작습니다. 범용 데이터베이스 대체재, Prisma/JPA
|
|
25
|
+
클론, 범용 Google Sheets API 래퍼를 목표로 하지 않습니다.
|
|
26
|
+
|
|
27
|
+
## Hikoutei가 제공하는 것
|
|
28
|
+
|
|
29
|
+
- 엔티티 중심 생명주기: 생성, 조회, 변경, `persist`, `remove`, `flush`.
|
|
30
|
+
- Sheet 데이터에 대한 타입 필드 매핑과 런타임 검증.
|
|
31
|
+
- 원격 스프레드시트 요청을 기다리지 않는 로컬 SQLite 조회.
|
|
32
|
+
- 사람이 검토하고 가볍게 협업할 수 있는 비동기 Google Sheets 뷰.
|
|
33
|
+
- 예상하지 못한 스키마 변경과 최신 데이터를 덮어쓰는 문제에 대한 보호.
|
|
34
|
+
|
|
35
|
+
## 설치
|
|
36
|
+
|
|
37
|
+
프로젝트와 npm 패키지 이름은 모두 `hikoutei`입니다.
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
npm install hikoutei @mikro-orm/core @mikro-orm/sql
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
MikroORM 패키지는 루트 패키지의 선택적 peer dependency이지만, Hikoutei의
|
|
44
|
+
기본 SQLite 어댑터를 사용할 때는 필요합니다.
|
|
45
|
+
|
|
46
|
+
## 빠른 시작
|
|
47
|
+
|
|
48
|
+
엔티티 매핑을 정의한 후 요청 단위 manager로 엔티티를 다룹니다. 전체 매핑과
|
|
49
|
+
Gateway 설정은 [빠른 시작 가이드](docs/quick-start.md)에 있습니다.
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
import { initializeMappedTypedSheetsOrm } from "hikoutei/mikro-orm";
|
|
53
|
+
import { User } from "./entities/User.js";
|
|
54
|
+
import { userMapping } from "./mappings/userMapping.js";
|
|
55
|
+
|
|
56
|
+
const hikoutei = await initializeMappedTypedSheetsOrm({
|
|
57
|
+
dbName: "./hikoutei.sqlite",
|
|
58
|
+
entities: [User],
|
|
59
|
+
mappings: [userMapping],
|
|
60
|
+
writer: { writerId: "users-service" },
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const em = hikoutei.em.fork();
|
|
64
|
+
const user = em.create(User, { id: "u1", name: "Ada" });
|
|
65
|
+
em.persist(user);
|
|
66
|
+
await em.flush();
|
|
67
|
+
|
|
68
|
+
user.name = "Ada Lovelace";
|
|
69
|
+
await em.flush();
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`flush()`는 로컬 애플리케이션 상태를 변경하고 설정된 Sheet 뷰에 반영할 작업을
|
|
73
|
+
예약합니다. 원격 전달은 비동기이므로 [설정 가이드](docs/quick-start.md)에 따라
|
|
74
|
+
sync worker를 실행하고 Gateway를 프로비저닝해야 합니다.
|
|
75
|
+
|
|
76
|
+
## Hikoutei를 사용하기 좋은 경우
|
|
77
|
+
|
|
78
|
+
- 스프레드시트가 제품 업무 흐름의 일부인 MVP와 프로토타입.
|
|
79
|
+
- 내부 도구와 저트래픽 관리 애플리케이션.
|
|
80
|
+
- 타입이 지정된 애플리케이션 데이터를 유지하면서 사람이 Sheets를 쉽게
|
|
81
|
+
확인해야 하는 팀.
|
|
82
|
+
- 로컬 SQLite를 사용할 수 있고 Sheets의 비동기 업데이트를 허용할 수 있는
|
|
83
|
+
서비스.
|
|
84
|
+
|
|
85
|
+
## 다른 도구를 선택해야 하는 경우
|
|
86
|
+
|
|
87
|
+
다음 요구사항이 있다면 일반적인 데이터베이스와 직접적인 Google API 사용을
|
|
88
|
+
검토하세요.
|
|
89
|
+
|
|
90
|
+
- 여러 행 또는 여러 서비스에 걸친 강한 트랜잭션.
|
|
91
|
+
- 높은 쓰기 처리량 또는 많은 동시 작성자.
|
|
92
|
+
- 복잡한 쿼리, 조인, 리포팅 작업.
|
|
93
|
+
- 멀티 서버 또는 멀티 리전 조정.
|
|
94
|
+
- Google Sheets에서 즉시 쓰기 후 읽기 일관성이 필요한 경우.
|
|
95
|
+
- 애플리케이션의 기본 데이터베이스로 Google Sheets를 사용해야 하는 경우.
|
|
96
|
+
|
|
97
|
+
## Google Sheets 설정
|
|
98
|
+
|
|
99
|
+
1. 서버 애플리케이션에서 엔티티와 Sheet의 매핑을 정의합니다.
|
|
100
|
+
2. [`apps-script/gateway/Code.gs`](apps-script/gateway/Code.gs)를 Google Apps
|
|
101
|
+
Script Web App으로 배포합니다.
|
|
102
|
+
3. 서버에서 등록된 탭과 범위를 프로비저닝합니다.
|
|
103
|
+
4. 대기 중인 변경 내용을 전달하는 sync worker를 실행합니다.
|
|
104
|
+
|
|
105
|
+
Gateway 시크릿은 서버에만 보관하세요. 브라우저 코드에 넣거나 Git에 커밋하지
|
|
106
|
+
마세요.
|
|
107
|
+
|
|
108
|
+
## 문서
|
|
109
|
+
|
|
110
|
+
- [빠른 시작](docs/quick-start.md) — 설치, 매핑, Gateway 설정.
|
|
111
|
+
- [아키텍처](docs/architecture.md) — 로컬 저장소와 Sheet 화면의 관계.
|
|
112
|
+
- [쓰기 및 동기화 흐름](docs/write-and-synchronization-flow.md) — 비동기 전달과
|
|
113
|
+
복구 동작.
|
|
114
|
+
- [개발 가이드](docs/development.md) — 로컬 개발 및 테스트 명령.
|
|
115
|
+
- [벤치마크 기록](docs/sync-bulk-write-benchmark.md) — 날짜별 측정 결과와
|
|
116
|
+
한계.
|
|
117
|
+
|
|
118
|
+
## 제한사항
|
|
119
|
+
|
|
120
|
+
- Google Sheets에는 quota, 지연 시간, Apps Script 실행 시간 제한이 있습니다.
|
|
121
|
+
- Sheet 업데이트는 비동기이므로 애플리케이션은 로컬 상태를 읽어야 합니다.
|
|
122
|
+
- SQLite는 서비스에 로컬이며 분산 조정 계층이 아닙니다.
|
|
123
|
+
- 스키마 변경, 수동 편집, 충돌하는 변경에 대한 운영 정책은 애플리케이션이
|
|
124
|
+
별도로 정해야 합니다.
|
|
125
|
+
|
|
126
|
+
## 로드맵
|
|
127
|
+
|
|
128
|
+
- Google Sheets에서 의도적인 사용자 편집을 수집하는 기능 완성.
|
|
129
|
+
- update/delete 충돌 처리와 표시 개선.
|
|
130
|
+
- 레지스트리 및 Apps Script 배포를 위한 설정 도구 추가.
|
|
131
|
+
- 공개 패키지 릴리스 안정화.
|
|
132
|
+
|
|
133
|
+
현재 작업은 [open issues](https://github.com/ManddarinShop/Hikoutei/issues)
|
|
134
|
+
에서 확인할 수 있습니다.
|
|
135
|
+
|
|
136
|
+
## 라이선스
|
|
137
|
+
|
|
138
|
+
Hikoutei는 [MIT License](LICENSE)로 배포됩니다.
|
package/README.md
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
[한국어](README.ko.md) | [日本語](README.ja.md)
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
# Hikoutei
|
|
6
|
+
|
|
7
|
+
**Typed repository and safe write layer for Google Sheets-backed MVPs.**
|
|
8
|
+
|
|
9
|
+
<a href="https://www.npmjs.com/package/hikoutei">npm package</a> ·
|
|
10
|
+
<a href="https://github.com/ManddarinShop/Hikoutei/issues">Issues</a> ·
|
|
11
|
+
<a href="apps-script/gateway/Code.gs">Apps Script gateway</a>
|
|
12
|
+
|
|
13
|
+
[](https://www.npmjs.com/package/hikoutei)
|
|
14
|
+
[](LICENSE)
|
|
15
|
+
[](https://www.typescriptlang.org/)
|
|
16
|
+
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
Hikoutei helps TypeScript and Node.js applications use Google Sheets as a
|
|
20
|
+
human-friendly part of an MVP or internal workflow. Your application works
|
|
21
|
+
with typed entities and local SQLite; changes can be delivered to Google
|
|
22
|
+
Sheets asynchronously through the included Apps Script gateway.
|
|
23
|
+
|
|
24
|
+
Hikoutei is intentionally focused. It is not a general-purpose database
|
|
25
|
+
replacement, a Prisma/JPA clone, or a general Google Sheets API wrapper.
|
|
26
|
+
|
|
27
|
+
## Why Hikoutei?
|
|
28
|
+
|
|
29
|
+
- Entity-oriented lifecycle: create, find, mutate, persist, remove, and flush.
|
|
30
|
+
- Typed field mappings with runtime validation for Sheet data.
|
|
31
|
+
- Local SQLite reads for application workflows that should not wait on a remote
|
|
32
|
+
spreadsheet request.
|
|
33
|
+
- Asynchronous Google Sheets views for human review and lightweight
|
|
34
|
+
collaboration.
|
|
35
|
+
- Protection against common spreadsheet problems such as unexpected schema
|
|
36
|
+
changes and accidentally overwriting newer changes.
|
|
37
|
+
|
|
38
|
+
## Installation
|
|
39
|
+
|
|
40
|
+
The project and npm package are both called `hikoutei`.
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
npm install hikoutei @mikro-orm/core @mikro-orm/sql
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The MikroORM packages are optional peer dependencies of the root package, but
|
|
47
|
+
are required when using Hikoutei's built-in SQLite adapter.
|
|
48
|
+
|
|
49
|
+
## Quick start
|
|
50
|
+
|
|
51
|
+
After defining an entity mapping, use a request-local manager to work with
|
|
52
|
+
entities. A complete mapping and gateway setup are shown in the
|
|
53
|
+
[Quick start guide](docs/quick-start.md).
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { initializeMappedTypedSheetsOrm } from "hikoutei/mikro-orm";
|
|
57
|
+
import { User } from "./entities/User.js";
|
|
58
|
+
import { userMapping } from "./mappings/userMapping.js";
|
|
59
|
+
|
|
60
|
+
const hikoutei = await initializeMappedTypedSheetsOrm({
|
|
61
|
+
dbName: "./hikoutei.sqlite",
|
|
62
|
+
entities: [User],
|
|
63
|
+
mappings: [userMapping],
|
|
64
|
+
writer: { writerId: "users-service" },
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const em = hikoutei.em.fork();
|
|
68
|
+
const user = em.create(User, { id: "u1", name: "Ada" });
|
|
69
|
+
em.persist(user);
|
|
70
|
+
await em.flush();
|
|
71
|
+
|
|
72
|
+
user.name = "Ada Lovelace";
|
|
73
|
+
await em.flush();
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`flush()` updates the local application state and schedules the configured
|
|
77
|
+
Sheet view. Remote delivery is asynchronous, so start the sync worker
|
|
78
|
+
and provision the gateway as described in the [setup guide](docs/quick-start.md).
|
|
79
|
+
|
|
80
|
+
## When to use Hikoutei
|
|
81
|
+
|
|
82
|
+
Hikoutei is a good fit for:
|
|
83
|
+
|
|
84
|
+
- MVPs and prototypes where a spreadsheet is part of the product workflow.
|
|
85
|
+
- Internal tools and low-traffic administrative applications.
|
|
86
|
+
- Teams that want typed application data while keeping Sheets easy for people
|
|
87
|
+
to inspect.
|
|
88
|
+
- Services that can use SQLite locally and accept asynchronous Sheet updates.
|
|
89
|
+
|
|
90
|
+
## When to choose something else
|
|
91
|
+
|
|
92
|
+
Use a conventional database and direct Google APIs when you need:
|
|
93
|
+
|
|
94
|
+
- Strong transactions across many rows or services.
|
|
95
|
+
- High write throughput or many concurrent writers.
|
|
96
|
+
- Complex queries, joins, or reporting workloads.
|
|
97
|
+
- Multi-server or multi-region coordination.
|
|
98
|
+
- Immediate read-after-write consistency in Google Sheets.
|
|
99
|
+
- Google Sheets to be the primary database for the application.
|
|
100
|
+
|
|
101
|
+
## Google Sheets setup
|
|
102
|
+
|
|
103
|
+
1. Define the entity-to-Sheet mapping in your server application.
|
|
104
|
+
2. Deploy [`apps-script/gateway/Code.gs`](apps-script/gateway/Code.gs) as a
|
|
105
|
+
Google Apps Script Web App.
|
|
106
|
+
3. Provision the registered tabs and ranges from the server.
|
|
107
|
+
4. Run the sync worker that delivers pending changes.
|
|
108
|
+
|
|
109
|
+
Keep the gateway secret on the server. Do not put it in browser code or commit
|
|
110
|
+
it to Git.
|
|
111
|
+
|
|
112
|
+
## Documentation
|
|
113
|
+
|
|
114
|
+
- [Quick start](docs/quick-start.md) — installation, mapping, and gateway setup.
|
|
115
|
+
- [Architecture](docs/architecture.md) — how the local store and Sheet views
|
|
116
|
+
fit together.
|
|
117
|
+
- [Write and synchronization flow](docs/write-and-synchronization-flow.md) —
|
|
118
|
+
asynchronous delivery and recovery behavior.
|
|
119
|
+
- [Development](docs/development.md) — local development and test commands.
|
|
120
|
+
- [Benchmark notes](docs/sync-bulk-write-benchmark.md) — dated measurements
|
|
121
|
+
and their limitations.
|
|
122
|
+
|
|
123
|
+
## Limitations
|
|
124
|
+
|
|
125
|
+
- Google Sheets has quota, latency, and Apps Script execution limits.
|
|
126
|
+
- Sheet updates are asynchronous; the application should read its local state.
|
|
127
|
+
- SQLite is local to the service and is not a distributed coordination layer.
|
|
128
|
+
- Schema changes, manual edits, and conflicting updates still need an
|
|
129
|
+
operational policy from the application.
|
|
130
|
+
|
|
131
|
+
## Roadmap
|
|
132
|
+
|
|
133
|
+
- Complete ingestion of intentional user edits from Google Sheets.
|
|
134
|
+
- Improve update/delete conflict handling and presentation.
|
|
135
|
+
- Add setup tooling for registry and Apps Script deployment.
|
|
136
|
+
- Stabilize the public package release.
|
|
137
|
+
|
|
138
|
+
See the [open issues](https://github.com/ManddarinShop/Hikoutei/issues)
|
|
139
|
+
for current work.
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
Hikoutei is released under the [MIT License](LICENSE).
|